我正在嘗試創建一個新的SSRS報告,該報告將返回並顯示SQL Server存儲過程的值。我將傳遞參數@clientID
到存儲過程。此參數用於3個不同的BEGIN
/END
語句。每個BEGIN
`END`語句接受參數並進行查詢,返回特定的數據。SSRS - 在一個存儲過程中返回多個查詢
當我創建SSRS報告時,我將數據源指向此存儲過程,但僅返回來自第一個BEGIN
/END
語句的結果集。如果我在SSMS中運行存儲過程,我會得到3個不同的結果集,如預期的那樣。
如何將這3 BEGIN
/END
結果集合到一個報告中?
示例代碼:
CREATE PROCEDURE pClientData (@clientID varchar(30))
AS
DECLARE @Orders table (
...
);
DECLARE @Results table (
...
);
DECLARE @Status table (
...
);
BEGIN
SET NOCOUNT ON;
-- Get all the orders by client
INSERT INTO @Orders
SELECT ...
-- Return the results --
SELECT *
FROM @Orders;
END
BEGIN
SET NOCOUNT ON;
-- Determine the Results
INSERT INTO @Results
SELECT ...
SELECT *
FROM @Results;
END
BEGIN
SET NOCOUNT ON;
SET @Status = (
SELECT ...
);
SELECT @Status as Status;
END
GO
查詢電話從SSRS:
EXEC pClientData @clientID
感謝您的鏈接。我相信你 - 但你不認爲這是一種低效的查詢方式嗎?而不是計算一次並使用它3個地方,我知道必須計算3次不同的時間? Lame ... – mikebmassey 2012-03-15 20:06:50
@mikebmassey我同意,這是蹩腳的...我過去必須做的事情,當計算非常昂貴時...我有第一個存儲過程進行計算,並在返回結果之前將結果保存到(非臨時)表中,然後讓以下存儲過程引用由第一次調用填充的表...當然,這可能會更困難,取決於有多少不同版本的數據存在/併發性/等等...... – 2012-03-15 20:12:26
我沒有考慮使用臨時表。所以,'#'可以存活,但不能從查詢中查詢? – mikebmassey 2012-03-15 20:19:03