2010-04-16 57 views
1

我有一個返回多個表的子程序。Microsoft SQL Server 2005從返回多個表的子程序插入到表中

孩子:

PROCEDURE KevinGetTwoTables 
AS BEGIN 
    SELECT 'ABC' Alpha, '123' Numeric 

    SELECT 'BBB' Alpha, '123' Numeric1, '555' Numeric2 
END 

例如:

PROCEDURE KevinTesting 
AS BEGIN 
    DECLARE @Table1 TABLE (
     Alpha varchar(50), 
     Numeric1 int 
    ) 
    DECLARE @Table2 TABLE (
     Alpha varchar(50), 
     Numeric1 int, 
     Numeric2 int 
    ) 

    --INSERT INTO @Table1 
    EXEC KevinGetTwoTables 
END 
+0

在這裏放一個問號或人們會嚇壞了。 – 2010-04-16 14:35:42

回答

2

您將無法在父進程中捕獲兩個結果集,就像您可以將單個結果集捕獲到臨時表中一樣。但是,還有其他幾種選擇。閱讀優秀的文章How to Share Data Between Stored Procedures by Erland Sommarskog

如果您使用的是SQL Server 2008,請查看Table Parameters and Table Types的部分。您可以將這些表作爲輸出參數傳遞迴父級。

如果您不在SQL Server 2008上,請查看section on Sharing a Temp Table

你基本上創建父程序兩個#TempTables,孩子過程中您填充每個#TempTables和終止子的過程。當您回到父程序中時,每個#TempTable都有數據。

0

據我所知,沒有辦法捕捉第二個結果T-SQL中設置。

你可以從CLR stored procedure

+0

如果您無法更改子過程,那麼使用CLR很有用:http://www.sommarskog.se/share_data.html#CLR – 2010-04-16 15:14:35

相關問題