我有三个程序MainProcedure,Procedure1,Procedure2
1)在Procedure1中,我只有一个select语句,
2)在Procedure2中调用Procedure1并将Output插入#table
3)在主程序中,我调用Procedure2并尝试将输出插入到引发错误的#table
Msg 8164,Level 16,State 1,Procedure Procedure2,Line 10 INSERT EXEC语句不能嵌套。
我可以使用Openrowset解决这个问题,我需要使用指定服务器名称,有没有其他方法可以通过不指定servername详细信息来解决这个问题
请查找样本程序以供参考
Create Proc Procedure1
As
Begin
Select 'Arun' Name, 'Pollachi' Place
Union
Select 'Vedaraj' Name, 'Devakottai' Place
End
Go
Create Proc Procedure2
As
Begin
Create Table #Table1
(
Name Varchar(50), Place Varchar(50)
)
INSERT #Table1
Exec Procedure1
SELECT 'Procedure2' [Source], * FROM #Table1
DROP TABLE #Table1
End
Go
Create Proc MainProcedure
As
Begin
Create Table #Table1
(
[Source] Varchar(50), Name Varchar(50), Place Varchar(50)
)
INSERT #Table1
Exec Procedure2
select * from #Table1
DROP TABLE #Table1
End
Go
任何人都可以更改我的主程序并使其执行 谢谢!
答案 0 :(得分:0)
就像你说的那样,openrowset会起作用,但除此之外,我能想到的唯一方法是:
有关于此原因的更多信息:
https://connect.microsoft.com/SQLServer/feedback/details/294571/improve-insert-exec http://dataeducation.com/revisiting-isnull-coalesce-and-the-perils-of-micro-optimization/