1. ホーム
  2. データベース

INSERT EXEC文は入れ子にできません。

2022-02-09 04:39:50

今日、開発仲間がコンサルティングの問題を抱えていて、An INSERT EXEC statement cannot be nested というエラーを報告しました。

ウェブで検索した結果、ようやく解決策が見つかりました。http://www.sommarskog.se/share_data.html#INSERTEXEC を参照してください。

デモは以下の通りです。

use demo 
go 
alter proc usp_a @a int 
as 
create table #a(id int,editdt datetime) 
insert into #a 
        select @a,getdate() 
select * from #a   

alter proc usp_b 
as 
create table #c (id int,editdt datetime) 
insert into #c exec usp_a '2' 
select * from #c 


create table #d (id int,editdt datetime) 
insert into #d exec usp_b 
select * from #d


Msg 8164, Level 16, State 1, Procedure usp_b, Line 5
INSERT EXEC文は入れ子にできません。

を使用することで解決することができます。

使用デモ
行く
alter proc usp_c @a int
として
挿入#c select @a,getdate()

alter proc usp_d
として
テーブル#c(id int,editdt datetime)を作成します。
exec usp_c '2'
select * from #c

テーブル#eを作成します (id int,editdt datetime)
insert into #e exec usp_d
select * from #e

取得元:https://www.cnblogs.com/Wison-Ho/p/3993169.html