[英]Query to Stored Procedure for SSRS Report
我使用带有参数的查询在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
我可以在没有看到其余代码的情况下想到所有这些。 这也可能是报表服务本身的功能。
您将要使存储过程接受输入参数,以便SSRS将其发送进来。如果在proc中使用DECLARE
参数,则否则会将这些参数“隐藏”到SSRS中。 以您的示例为例:
USE [Some_Database]
GO
CREATE PROCEDURE MyReport
@p_ServerName NVARCHAR(10) = 'all',
@p_Env NVARCHAR(10) = 'all',
@p_EnvCat NVARCHAR(10) = 'all'
AS
SELECT DISTINCT <rest of my query...>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.