先看看过程MXZ有返回记录吗
你的insert into #TEMP EXEC PROC_A 在过程里是没返回记录的,所以不能插入到#temp5

解决方案 »

  1.   

    谢谢小黑的关注!
    MXZ是有返回记录的,为的就是这个,专门就是要它的返回记录的。
    MXZ是早就建好的过程,也可以其它方式调用。运行
    insert into #TEMP5  EXEC MXZ '6/8/2004','06/9/2004'
    就会出错,说是 "INSERT EXEC 不能嵌套"
      

  2.   

    insert into table2(chr1,chr2) exec('select ''1'',''2''')运行成功
    所以应该可以嵌套
    查一下存储过程,看字段是否对应,
      

  3.   

    这样改就可以了把PROC_A 改为function
    你看一下整个是简化示例CREATE FUNCTION PROC_A ()
    RETURNS @a TABLE
       (
    a int
    )AS
    BEGIN
       INSERT @a         
    select '4' union select '5' union select '6' RETURN
    ENDgo
    create proc MXZ 
    ascreate table #TEMP (b int)
    insert into #temp SELECT *  from PROC_A ()select '4' union select '5' union select '6'go
    --测试
    create table #TEMP5 (c int)insert into #temp5 exec MXZ
      

  4.   

    可以的
    insert into #TEMP5  
    EXEC MXZ '6/8/2004','06/9/2004'
    不过先要建好临时表,而看MXZ 是否返回结果集
      

  5.   

    如果是这样就报错create proc PROC_A 
    asselect '1' union select '2' union select '3'gocreate  proc MXZ 
    ascreate table #TEMP (b int)
    insert into #temp exec PROC_Aselect '4' union select '5' union select '6'go
    create table #TEMP5 (c int)insert into #temp5 exec MXZ
      

  6.   

    TO wutao411 和 阿来: 
        临时表事先存在,字段顺序也对应。已确认问题出在语句"insert into exec 一个带有insert into的过程名" ,会提示出错,说insert into exec 不能嵌套。TO 小黑:
      您说的把Procedure改为函数的方法应该具有通用性,凡是这类的问题都可以照此办理。比如这样的问题:
        PROC_1调用PROC_2,PROC_2调用PROC_3,PROC_3调用PROC_4,PROC_4调用PROC_5,
        PROC_5返回些行集给PROC_4,PROC_4返回些行集给PROC_3,PROC_3返回些行集给PROC_2,PROC_2返回些行集给PROC_1,从而得到最后的结果。假如用这样的方法:
      在PROC_1中写:insert into #TEMP1 exec PROC_2
      在PROC_2中写:insert into #TEMP2 exec PROC_3
      在PROC_3中写:insert into #TEMP3 exec PROC_4
      在PROC_4中写:insert into #TEMP4 exec PROC_5
    就会出现楼顶提出的错误了(假设那些临时表都已存在)。而改用小黑说的写出成function的方法:
      在func_1中写:insert into #TEMP1 select * from func_2()
      在func_2中写:insert into #TEMP2 select * from func_3()
      在func_3中写:insert into #TEMP3 select * from func_4()
      在func_4中写:insert into #TEMP4 select * from func_5()
    就成。
        之前解决这个问题,我是用建立全局临时表##TEMP???? 的方法,感觉不爽才提这个问题的。    谢谢楼上大伙的帮助!