2012-11-21 52 views

回答

4

您還可以使用INSERT INTO... SELECT

INSERT INTO myTable (col1, col2, col3....) 
SELECT 1, 2, mySP_or_mySDF(), 3, 4 

如果你想INSERT數據從一個存儲過程,那麼你需要創建一個臨時表,並插入首先將結果導入臨時表,然後您可以使用結果插入到最終表中。

+0

它看起來功能可以調用,但不是sp,是嗎? – bjan

+0

@bjan查看我的編輯,您必須先將存儲過程中的數據添加到臨時表中,然後您可以使用它,因爲您要插入其他值。這是另一個關於它的問題 - http://stackoverflow.com/questions/653714/how-to-select-into-temp-table-from-stored-procedure – Taryn

+0

我想模仿使用oracle的序列在sql server,所以它需要在一個語句中 – bjan

2

嘗試

Insert into myTable (....) values (1,2,dbo.mySP_or_mySDF(), 3,4) 
+1

它看起來功能可以調用但不是sp,是嗎? – bjan

1

不能調用存儲過程的SELECT/UPDATE/INSERT語句中,用SQL語句的異常:

insert into <whatever> 
    exec <some sql statement here>; 

(以及相關的結構)。

存儲過程並不真正返回值。那麼,他們確實返回一個整數。所以,你可以這樣做:

declare @retval int; 
exec @retval = mysp; 
insert into myTable(col1, col2, col3, col4) 
    select 1, 2, @retval, 3, 4 

你可以有存儲過程中「迴歸」的所有4個值,通過在SP身上以下語句:

select 1, 2, <whatever>, 3, 4 

,然後做 INSERT INTO myTable的(col1,col2,col3,col4) exec mysp;

+0

你不需要動態SQL:'插入到MyTable exec MyProc'工作正常 – Pondlife

+0

@Pondlife。 。 。當然你是對的。 –

相關問題