繁体   English   中英

查询SSRS报告的存储过程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM