如何在SSRS中使用带有null参数的存储过程?

时间:2012-03-05 14:58:18

标签: sql reporting-services ssrs-2008

我有一个使用可选参数的存储过程的报告。我有4个可选参数,因此在报告的预览选项卡中,我可以为参数设置4个文本框。但是当我在文本框中没有写任何内容时,我得到一个错误。我怎么做用空参数执行我的proc是SSRS?

4 个答案:

答案 0 :(得分:1)

您可以按如下方式向过程声明参数:

@Your_parameter VARCHAR(50) = NULL

并在where as:

中使用
where (@Your_parameter IS NULL OR columnname = @Your_parameter )

答案 1 :(得分:0)

请注意,“将框留空”可能会将空白字符串传递给存储过程,因此即使正确编写过程(如Vikram发布的代码中),您也不会看到错误,但您可能看不到预期的结果。

如果您的过程编写正确,请在SSRS设计器中访问参数属性并查看“默认值”的设置。确保默认设置为“null”,而不是空字符串。如果参数是列表,则可以拆分值和标签,以便在用户从列表中选择“无”时传递空值。还可以访问数据集属性并查看参数映射,以确保报告参数正确映射到查询参数。

这是非常一般的信息,因为您没有发布您收到的错误消息。错误消息中提供的信息通常提供了导致问题的原因的线索。如果您在查看Vikram提供的程序信息和上述SSRS参数信息后仍在苦苦挣扎,发布错误消息将有助于人们为您提供更相关的响应,让您再次行动。 祝你好运!

答案 2 :(得分:0)

听起来您已经创建了参数,但实际上并没有将它们传递给存储过程。通过查看数据选项卡检查它们是否正确(参见屏幕截图):

enter image description here

听起来你已经拥有,但是双重检查允许空格未被检查,但是在参数选项下勾选了允许空值。

答案 3 :(得分:0)

SSRS returning different results than the stored procedure复制

在SSRS中,我试图将null作为参数值传递给存储过程。看来,无论我尝试了什么,SSRS都在存储过程中使用了不与@Parameter一起使用的'null'为null。

我创建了一个名为@Rs_null的报告参数,其默认值为(null)。然后我可以使用它。

(创建报告变量不好,因为我无法传递该存储过程参数。)