2011-11-01 82 views
1

我有一個爲報表提取數據的存儲過程。我在參數上遇到問題。我有一對臨時表和一些可以工作的連接,所以我在下面省略了它們。問題是這樣的一行:SQL Server 2008中的參數

WHERE 
SeminarDivision = @SeminarDivision AND SeminarType = @SeminarType 

當我把這個where子句中使用我的講座參數的存儲過程返回什麼,但我需要生成基於這兩個參數的報告。那麼參數在哪裏?誰能幫忙?

@StartDate DateTime, 
@EndDate DateTime, 
@SeminarDivision VARCHAR(50), 
@SeminarType VARCHAR(50) 
) 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

     ... OMITTED  
SELECT 
    WL.PID, 
    CONVERT(varchar(20), upper(substring(FirstName,1,1))+ 
     LOWER(substring(FirstName,2,19))) AS FirstName, 
    CONVERT(varchar(20), upper(substring(LastName,1,1))+ 
     LOWER(substring(LastName,2,19))) AS LastName, 
    S.SeminarDivision, 
    S.SeminarType, 
    S.StartDate, 
    S.SeminarLocation 
FROM 
    @tblWaitList WL 
    INNER JOIN @tblSeminar S ON WL.SeminarGuid=S.SeminarGuid 
WHERE 
    SeminarDivision = @SeminarDivision AND SeminarType = @SeminarType 
ORDER BY 
    LastName,FirstName,StartDate 
+1

我在這裏看到沒有錯。你打電話過程如何? –

+0

哇!我很抱歉,我將SSRS中的默認值設置爲無效名稱。愚蠢的錯誤。感謝您查看我的問題。你們至少讓我知道我的語法是正確的,我不確定這一點。 – 2boolORNOT2bool

回答

1

首先,你的代碼沒有什麼問題,當詢問這些參數到什麼地方時,它們就會放到你放置它們的地方。問題是 - 研討會分區和研討會類型的數據是否有數據?例如,作爲測試, 將代碼複製到編輯器中的新SQL代碼查詢中。如果你的價值很高,不用在哪裏運行命令。現在改變在哪裏

WHERE SeminarDivision = "Possible_Value"

凡POSSIBLE_VALUE應該是一個可能值...如果返回行,好...現在添加第二個條件也硬編碼的值:

WHERE SeminarDivision = "Possble_Value" AND SeminarType="Possible_Value_2"

獲取任何數據?是否有可能你想要OR而不是AND

+0

是的,我確實需要滿足這兩個條件,所以我使用了AND運算符,並且如果where子句被刪除,我會得到我需要的所有數據,但是所有的部門和所有類型。如果我硬編碼參數,它會給我任何我輸入的字符串。我很難過! – 2boolORNOT2bool

+0

我想我不明白你的意思。只是硬編碼一個條件,什麼是一個條件的結果?發佈樣本數據可以幫助我們,我們不介意讀者。 – JonH

+0

你說得對,條件是沒有得到滿足,因爲我有一個SSRS默認值設置,它是不正確的。這只是「用戶錯誤」,但你讓我知道我的語法是正確的,所以我檢查了你的幫助。謝謝! – 2boolORNOT2bool

1

您的參數的「位置」沒有任何問題。

如果您沒有收到任何數據,則可能是因爲您尚未填充@tblWaiList@tblSeminar或者記錄與您的WHERE子句不符。

檢查您的PARAMS必須通過執行print @SeminarDivision

SELECT * FROM @tblSeminar可以給你一個線索過於你認爲他們這樣做的價值。

1

您沒有爲呼叫正確設置參數。

試試這個SSMS中,變化值相應

EXEC Proc '20110101', '20111101', 'PossibleDivision', 'PossibleType' 

如果失敗,則向我們展示「省略」代碼

如果這個工程,向我們展示你是如何從客戶端代碼

調用此