簡體   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