我使用带有参数的查询在 SSRS 中创建了一个报告,并且运行良好。但我决定改用存储过程,这样如果需要任何更改,只需将其应用于 SSMS,而不是同时应用于 SSMS 和 SSRS 中的查询。
所以我创建了一个存储过程,如下所示:
USE [Some_Database]
GO
CREATE PROCEDURE MyReport
AS
DECLARE @p_ServerName nvarchar(10) = 'all'
DECLARE @p_Env nvarchar(10) = 'all'
DECLARE @p_EnvCat nvarchar(10) = 'all'
SELECT DISTINCT <rest of my query...>
这是我正在使用的版本的一个大大缩短的版本,但关键字的顺序是准确的。当我在 SSRS 中预览报告时,我收到“无行消息”。
任何人都可以看到我在创建存储过程时做错了什么吗?
此外,使用存储过程是否需要在 SSRS 中设置与使用查询不同的参数?
干杯。
更新:在 CREATE 和 AS 之间放置参数并删除 DECLARE 后,它在 SSRS 中适用于特定值,但当我选择“ALL”时,它不会。
有什么想法吗?
最佳答案
我唯一能想到的可能就是参数的位置。 如果有参数从外部源传入,例如用户在报告服务或其他内容中输入参数,则需要在 AS 语句之前声明它们,如下所示:
USE [CRCIVR]
GO
Create Proc dbo.[spFrontTileExceptionsData]
(
@userid as int,
@companyid as int,
@exceptioncodes as varchar
)
AS
Begin
这就是我在没有看到其余代码的情况下所能想到的。它也可能是报告服务本身的一部分。
关于sql - 查询 SSRS 报告的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23921086/