日期:2014-05-18 浏览次数:20505 次
给你举个例子 Create proc P1 as select 'a' as ID,'b' as ID2 go Create proc P2 as select 'c' as ID,'d' as ID2 go Create table #(ID nvarchar(2),ID2 nvarchar(2)) insert # exec P1 insert # exec P2 go select * from #--这样获取后再处理 /* ID ID2 a b c d */
------解决方案--------------------
过程所调用的过程中,不能有insert into exec proc 这样的语句:
create table UserInfo (ID int,Name varchar(50),Sex varchar(50)) insert into UserInfo (ID,Name,Sex) values(1,'a','男') insert into UserInfo (ID,Name,Sex) values(2,'b','女') go Create PROCEDURE usp_InnerProc AS select id from UserInfo GO Create PROCEDURE usp_OuterProc AS create table #t2 (lev int) insert into #t2 EXECUTE usp_InnerProc; select * from #t2 GO Create PROCEDURE usp_ThiredProc AS create table #t (lev int) insert into #t EXECUTE usp_OuterProc; select * from #t go exec usp_InnerProc /* id ----------- 1 2 (2 行受影响) */ exec usp_OuterProc /* lev ----------- 1 2 (2 行受影响) */ exec usp_ThiredProc /* 消息 8164,级别 16,状态 1,过程 usp_OuterProc,第 3 行 INSERT EXEC 语句不能嵌套。 */ go drop procedure usp_ThiredProc,usp_OuterProc,usp_InnerProc drop table UserInfo
------解决方案--------------------
这样用,主要用于处理数据
Create proc P1 as select @@NESTLEVEL if @@NESTLEVEL<32 exec P1 go --调用方法 Create table #(ID int) insert # exec P1 select * from # go /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 */ --drop proc p1