sql - 查询 SSRS 报告的存储过程

标签 sql sql-server t-sql stored-procedures reporting-services

我使用带有参数的查询在 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/

相关文章:

MySQL:选择多个字段

c# - 影响如何在 EF 6 代码优先中从数据库创建实体类

sql-server - 当输入参数为空时打印错误消息并终止程序

mysql - 使用 if 条件过滤 SQL 查询

mysql - 使用 SQL 语句计算天数、缺勤和迟到

mysql - 如何将向量插入到 mysql 表的列中?

c# - SQL Server 用户实例中的哪些内容使它们无法在非 Express Edition 中使用?

sql-server - SQL Server 日期格式取决于用户吗?

sql-server - 如何对总数求和但只保留多个名字中的一个

sql-server - 根据该行中的值填充行