我的程序就是这样,很简单。
ALTER PROCEDURE dbo.MyProcedure
@NoteStoreType INT
AS
SELECT
Column1, Column2, Column3
FROM
tblNoteStore
WHERE
tblNoteStore.Type IN (COALESCE(@NoteStoreType, tblNoteStore.Type))
我的数据集用于填充可用的参数值:
SELECT DISTINCT
tblNoteStore.Type,
lstNoteTypes.Description
FROM
tblNoteStore
INNER JOIN
lstNoteTypes ON tblNoteStore.Type = lstNoteTypes.NoteTypeID
ORDER BY
lstNoteTypes.Description
返回此结果:
然后我转到报告参数属性以允许多个值:
现在设置可用值:
然后,如果我使用多个值运行报告,则会给出错误:
我知道这是因为SSRS将多个值视为字符串,并用逗号传递它们。
但在这种情况下会有什么工作?
答案 0 :(得分:1)
存储过程中的参数@NoteStoreType INT
是单个INTEGER,而不是整数值列表。您应该尝试使用动态查询:
CREATE PROCEDURE dbo.MyProcedure
@NoteStoreType NVARCHAR(2048)
AS
BEGIN
DECLARE @cmd NVARCHAR(MAX)
SET @cmd = 'SELECT Column1, Column2, Column3
FROM tblNoteStore
WHERE tblNoteStore.Type IN (' + @NoteStoreType + ')';
EXEC (@cmd);
END
GO
答案 1 :(得分:1)