2012-11-15 25 views
1

我有要求在哪裏需要使用商店過程的結果更新表。執行存儲過程並更新表格

例子:

Declare @result1 decimal 
Declare @price deciaml 

Create Table #OrderDetails 
{ 
    @orderID bigint 
    ,@orderName nvarchar(9) 
    ,@orderPrice decimal 
    ,@orderFlag nchar(1) 
} 

Insert into #OrderDetails 
{ 
    @orderID 
    ,@orderName 
    ,@orderPrice 
    ,@orderFlag 
} Select * from CartDetails 


Update #OrderDetails 
set @orderFlag = 1 
from #OrderDetails 
where orderID = 1 

--Now update each row of #OrderDetails by calling a stored procedure 
Update #OrderDetails 
set @orderPrice= @result1 
from (exec store_proc_calc_price orderID, orderName, @price = @result1 Output) 

是否有不執行的每一行存儲過程中#OrderDetails和更新從存儲過程的結果@orderPrice的方法嗎?

回答

0

是的,你可以做到這一點。您需要創建一個遊標來循環遍歷表的所有行,並調用每行的存儲過程。看幫助中的光標示例,它是非常直接的...

+0

當前實現有一個遊標,我正試圖刪除遊標。 – user1825332

+0

遊標有什麼問題?沒有其他方法可以爲表格的每一行調用sp ... –