2013-02-13

INSERT EXEC 陳述式不可以是巢狀的

最近編寫stored procedure發生
「INSERT EXEC 陳述式不可以是巢狀的」的錯誤訊息,
主因是因為procedure內使用exec將結果寫入tempdb,
又將procedure回傳的結果又寫入tempdb中,
於MS SQL中視為Nested Insert Exec,所以禁止此操作,
解決方法可使用新增本機linkedserver的方式處理。

 
--建立linkserver
EXEC sp_addlinkedserver
@server = 'Local',--Server Name
@srvproduct = 'MS SQL',
@datasrc = '192.168.2.215\TWERP',--Server IP
@provider = 'SQLNCLI'

--修改linkserver-開啟RPC
EXEC sp_serveroption 'Local','RPC OUT','TRUE' 

--刪除linkserver
EXEC sp_dropserver @server='Local'
--使用範例
insert into #Tmp_Table
EXEC [Local].DB.dbo.SP_GET_Qty
參考自

沒有留言: