所以下面是我的問題沒有任何數據的例子。我有一個問題,我已經創建了一個帶有IF的存儲過程,以便參數指定我創建的數據集在SSRS中,但是當我在SSRS中傳遞參數時,我沒有收到數據集請求。我的例子腳本如下:SSRS數據集參數不起作用
USE [InfoPortal]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[usp_Report_SSRSTest]
(
@ReportType VARCHAR(255) = NULL
, @Debug VARCHAR(1) = NULL
)
AS
BEGIN
SET NOCOUNT ON
SET FMTONLY OFF
CREATE TABLE #data1
(
number INT
,text1 VARCHAR(100)
,text2 VARCHAR(300)
)
CREATE TABLE #data2
(
number INT
,text3 VARCHAR(100)
,text4 VARCHAR(300)
)
IF @ReportType = 'Y'
BEGIN
SELECT
number
, text1
, text2
FROM #data1
END
ELSE
BEGIN
SELECT
number
, text3
, text4
FROM #data2
END
END
所以,當我進入數據集>添加數據集,我選擇「存儲過程」的「查詢類型」,選擇上面的存儲過程。然後我去參數和@ReportType我輸入「Y」和@Debug我輸入「N」。我點擊刷新字段,然後確定。但不是將「Y」傳遞到存儲的proc中,它似乎沒有傳遞任何東西,因爲我將存儲的proc的ELSE部分作爲可用字段返回到數據集中。當我嘗試使用@ReportType「N」和@Debug「N」時,我得到了我需要的可用字段,但是我假設這是因爲它將NULL傳遞給了@ReportType。
有什麼我失蹤?
當我使用與上面相同的參數運行proc SSMS時,我得到了我需要的數據集。當我在SSRS中的查詢設計器中運行存儲過程時,它也很好。
那麼,爲什麼我的報告將一個NULL作爲參數傳遞給存儲過程,即使我將參數設置爲Dataset屬性中的值?
你提到'它似乎沒有通過',你確認了嗎?使用'SQL Server Profiler'確定這是正確的。 – Tak 2014-10-08 12:55:21
感謝回覆@t_m。是的,我們已經運行了分析器,並且似乎即使我們在「數據集屬性」中設置了它,參數中仍然會傳遞NULL。 – 2014-10-08 14:23:30