gpt4 book ai didi

sql-server - 为什么在 SSRS 中传递多个整数值参数会引发转换错误?

转载 作者:行者123 更新时间:2023-12-02 20:51:34 25 4
gpt4 key购买 nike

我的程序就是这样,非常简单。

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

返回此结果:

enter image description here

然后我转到“报告参数属性”以允许多个值:

enter image description here

现在设置可用值:

enter image description here

然后,如果我运行包含多个值的报告,则会出现错误:

enter image description here

我知道发生这种情况是因为 SSRS 将多个值视为字符串,并通过逗号传递它们。

但是在这种情况下该如何解决呢?

最佳答案

我尽量避免使用动态 SQL,因为它更难维护。您可以将此参数作为 SQL 中的过滤器应用,也可以在查询运行后在数据集级别应用它。

添加数据集过滤器非常简单。唯一的缺点是效率较低。如果速度差异微不足道,那么这是一个不错的选择。 enter image description here

在 SSRS 的某些版本中,您可以在 SQL 中使用常规 IN 语句:

WHERE tblNoteStore.Type IN (@NoteStoreType) 

如果这不适用于您的版本,您还可以在 SQL 中使用自定义 Split 函数将逗号分隔的字符串分解为单独的值。已经有很多专门针对该特定主题的答案。

关于sql-server - 为什么在 SSRS 中传递多个整数值参数会引发转换错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com