2017-03-21 29 views
1

我需要從另一個存儲過程Bar調用存儲過程Foo。事情是Foo返回2記錄集Bar我只想分析第一個。一個存儲過程如何從另一個執行結果中讀取第一個記錄集?

我發現很多關於如何處理單個記錄集作爲被調用方存儲過程結果的建議。但沒有多少。

+1

你可能想看看[如何共享存儲過程之間的數據(http://www.sommarskog.se/share_data.html) –

+0

爲了更清楚,這裏有兩個記錄集意味着兩個選擇? – Anil

+0

@Anil是的,兩個'SELECT's。 – Zharro

回答

0

這不能單純的事務SQL來完成,只有當你創建一個CLR存儲過程(AKA,SP .NET編寫)

如果您有機會獲得Foo - 您可以將參數添加到它,告訴哪個結果集返回。

事情是這樣的僞代碼:

ALTER Procedure dbo.Foo 
(
    @ResultSetIndicator smallint = 0 
) 
AS 

BEGIN 

    if (@ResultSetIndicator = 0) 
    BEGIN 
     SELECT xxx 
    END 

    if (@ResultSetIndicator = 1) 
    BEGIN 
     SELECT yyy 
    END 
END 
+0

在純TSQL中可能是不可能的,因爲它不包含存儲這種結構的實體。感謝您的答案和CLR存儲過程選項。 – Zharro

+0

@Zharro是的,即使您嘗試「INSERT INTO xxx EXEC Foo」,服務器也會抱怨您的兩個結果集具有不同的列號,不同的列名等。 – jazzcat

相關問題