INSERT EXEC PROC不能巢狀的解決方法

2021-05-10 13:51:52 字數 2317 閱讀 3035

insert exec proc不能巢狀的解決方法

儲存過程c返回乙個結果集,儲存過程b用insert/exec proc將c返回的結果集存入乙個臨時表中並返回乙個結果集,

如果儲存過程a用insert/exec proc再將b的結果集存入乙個臨時表,這時會報錯:insert exec 語句不能巢狀。

解決方法就是:

將過程b的insert/exec proc語句替換為

insert into #t

select *

from openrowset('msdasql',

'driver=;server=192.168.0.1;uid=sa;pwd=111111;initial catalog=pubs',

'exec pubs.dbo.pc') as a

即可,不過好像在過程a中要先執行一下過程b才行,即在a過程的語句insert/exec proc的前面加上exec b。

只要過程b先執行一次,以後可以不用再執行a也能夠正常執行了,這樣可將過程b設定為啟動時執行即可(用系統過程sp_procoption設定)

create proc pc

asselect top 10 * from authors

drop proc pb

create proc pb

as select  * into #t from authors where 1=0

--insert into #t exec pc

insert into #t

select *

from openrowset('msdasql',

'driver=;server=192.168.0.1;uid=sa;pwd=111111;initial catalog=pubs',

'exec pubs.dbo.pc') as a

select * from #t

create proc pa

as select  * into #t from authors where 1=0

exec pb

insert into #t exec pb

select * from #t

exec pb

exec pa

或者用下面的方法解決:

先建乙個連線到自身資料庫的連線伺服器,如下:

exec sp_addlinkedserver

@server  = 'self',

@srvproduct  = '',

@provider  = 'msdasql',

@datasrc  = null,

@location  = null,

@provstr  = 'driver=;server=(local); initial catalog=master;uid=sa;pwd=111111;'

然後再開啟該連線伺服器的rpc功能,右擊該連線伺服器,單擊屬性,單擊伺服器選項,然後選中rpc和rpc輸出項即可。

在過程a中的語句insert into #t exec pb更新為insert into #t exec self.pubs.dbo.pb即可。全部**如下:

--建立過程c

create proc pc

asselect top 10 * from authors

--建立過程b

create proc pb

as select  * into #t from authors where 1=0

insert into #t exec pc

select * from #t

--建立乙個自連線的伺服器

exec sp_addlinkedserver

@server  = 'self',

@srvproduct  = '',

@provider  = 'msdasql',

@datasrc  = null,

@location  = null,

@provstr  = 'driver=;server=(local); initial catalog=master;uid=sa;pwd=111111;'

--建立過程a

create proc pa

as select  * into #t from authors where 1=0

insert into #t exec self.pubs.dbo.pb

select * from #t

--執行過程a,測試通過

不信謠,不傳謠,不造謠

不信謠,不傳謠,不造謠 最近謠言四起,實在看不下去了,在網路奔波也有7 8年哉,深知和俺一樣長期穿馬甲逛街的,流竄於各大社群,三人為虎之厲害,但只基於八卦,不可越界!一直視為馬甲本質,也是一合格網民基本道德,可最近的八卦有變,大家認真分辨,別上了他們的圈套,這次 謠言有以下幾個階段性特徵 一階段 攻...

不饒點滴,不饒自己

昨晚又重複了聽了一遍曹禺大師與黃永玉大師的來信,由張國立和王耀慶播講。印象最深的,是永玉大師說的一句,不饒點滴,不饒自己 原文是這樣,你是我極尊敬的前輩,所以我對你要嚴!我不喜歡你解放後的戲,乙個也不喜歡。你心不在戲裡,你失去偉大的靈通寶玉,你為勢位所誤!從乙個海洋萎縮為一條小溪流,你泥溷在不情願的...

不不不!我要認真寫部落格! Django的安裝

作為乙個部落格小白,我先寫乙個簡單的來練練手。本文主要引用了中的內容,是大神翻譯的django 1.8 中文文件,強烈推薦,如果不想看我的就去看看他們寫的吧!django作為python的乙個web框架,想要使用django的話,首先你要安裝python是不是?安裝pip工具,用來安裝django的...