我正在使用包含少量参数的存储过程的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