2012-01-16 21 views
1

我試圖從另一個sproc中調用一個存儲過程,並將結果放入臨時表中,而不先創建臨時表。有可能做到這一點,還是有更好的辦法?我想使用其結果集有多列和多行的sprocB或functionB。謝謝。是否可以調用sproc中的sproc,並將結果放入#temp表中,而無需先創建臨時表?

sproc A 
.. 
begin 
    -- create table #tmp.... -- Try not to create the #tmp table first if possible 
    exec sproc_B ... put results from sproc_B in #tmp 

end 

sproc B 
.. 
@id int 
.. 
begin 
    select table from aTable where id = @id 
end 

Similiar有人問here。 。

+1

可能重複[如何選擇* INTO \ [臨時表\] FROM \ [存儲過程\]](http://stackoverflow.com/questions/653714/how-to-select-into-temp-表存儲過程) – 2012-01-16 15:18:16

+0

是的,這就是我需要的。 thx – RetroCoder 2012-01-16 15:29:17

+0

但另一個問題沒有提到從一個sproc調用到另一個sproc。 – RetroCoder 2012-01-16 15:31:41

回答

4
create table #tmp.... 

    insert #tmp 
    exec sproc_B 
+0

是否可以在不首先創建臨時表的情況下將其添加到臨時表中? – RetroCoder 2012-01-16 15:13:33

+1

@RetroCode:否。另一種方法是使用可怕的表格UDF。 – 2012-01-16 15:15:34

+1

@RetroCoder:沒有。 INSERT .. EXEC需要一個預先存在的表 – gbn 2012-01-16 15:16:00

2
CREATE TABLE #tmpTable 
(
    COL1 INT, 
    COL2 INT 
) 

INSERT INTO #tmpTable 
Exec spGetResultset 'Params' 
1

是的,但你必須使用之前創建表的語法是:

INSERT INTO YourTable EXEC yourproc上

沒有必要說,對這個結構表應該與SP的輸出相匹配?

+0

嗨,是的,但我也可以沒有先創建臨時表,這樣做...從tSomeTable選擇*到#aNewTempTable – RetroCoder 2012-01-16 15:18:57

+0

沒有biggy,我只是改變我的問題,b/c這就是我想要的去做。 – RetroCoder 2012-01-16 15:21:39

相關問題