我正在使用包含少量參數的存儲過程的SSRS報告。我有兩個參數有問題,因爲我想要選擇多個項目。使用存儲過程的SSRS多值參數
這裏是什麼,我有一個濃縮版:
CREATE PROCEDURE [dbo].[uspMyStoredProcedure]
(@ReportProductSalesGroupID AS VARCHAR(MAX)
,@ReportProductFamilyID AS VARCHAR(MAX)
,@ReportStartDate AS DATETIME
,@ReportEndDate AS DATETIME)
--THE REST OF MY QUERY HERE WHICH PULLS ALL OF THE NEEDED COLUMNS
WHERE DateInvoicedID BETWEEN @ReportStartDate AND @ReportEndDate
AND ProductSalesGroupID IN (@ReportProductSalesGroupID)
AND ProductFamilyID IN (@ReportProductFamilyID)
當我嘗試只是運行存儲過程,如果我的@ReportProductSalesGroupID
和值1 @ReportProductFamilyID
只輸入1個值,我只返回值。如果我嘗試輸入兩個SalesGroupID
和/或2 ProductFamilyID
它不會出錯,但我什麼都不返回。
-- Returns data
EXEC uspMyStoredProcedure 'G23', 'NOF', '7/1/2009', '7/31/2009'
-- Doesn't return data
EXEC uspMyStoredProcedure 'G23,G22', 'NOF,ALT', '7/1/2009', '7/31/2009'
在SSRS我得到一個錯誤,指出:
附近有語法錯誤「」
看來,被列入字符串,而不是分隔符在,
分離器
您可以使用: - 動態SQL - 表值用戶定義函數請參閱[此鏈接的詳細信息](http://www.sql-server-helper.com/functions/comma-delimited-to-table。 ASPX)。 – 2009-08-10 20:15:40
另外,這是一個關於http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause的關閉副本特別是大衛羅賓斯的解決方案看起來不錯。 – 2009-08-10 20:15:09
好吧,我這樣做,它運作,如果我運行EXEC uspMyStoredProcedure'G23,G22','NOF,ALT','8/1/2009','8/9/2009' 但是,只要我嘗試它在rs中並從下拉列表中選擇多個值(從數據集生成)我在''附近得到不正確的語法 不知道我在丟什麼 – user153949 2009-08-10 21:31:19