我的程序就是这样,非常简单。
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 将多个值视为字符串,并通过逗号传递它们。
但是在这种情况下该如何解决呢?
最佳答案
我尽量避免使用动态 SQL,因为它更难维护。您可以将此参数作为 SQL 中的过滤器应用,也可以在查询运行后在数据集级别应用它。
添加数据集过滤器非常简单。唯一的缺点是效率较低。如果速度差异微不足道,那么这是一个不错的选择。
在 SSRS 的某些版本中,您可以在 SQL 中使用常规 IN
语句:
WHERE tblNoteStore.Type IN (@NoteStoreType)
如果这不适用于您的版本,您还可以在 SQL 中使用自定义 Split 函数将逗号分隔的字符串分解为单独的值。已经有很多专门针对该特定主题的答案。
关于sql-server - 为什么在 SSRS 中传递多个整数值参数会引发转换错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097889/