• 存储过程"Insert exec 语句不能嵌套"问题


     

    今天碰到一个问题,存储过程嵌套:存储过程ProcC里嵌套ProcB,ProcB里嵌套ProcA,执行ProcC时就报错“INSERT EXEC 语句不能嵌套”;

    下面这个方法可以解决问题:

      CREATE PROCEDURE ProcA
      AS
        SELECT '123456'
      GO

      --执行成功
      EXEC ProcA   


      CREATE PROCEDURE ProcB
      AS
          DECLARE @table TABLE(SN nvarchar(500))
          INSERT INTO @table
          EXEC ProcA
      GO

      --执行成功

      EXEC ProcB


      CREATE PROCEDURE ProcC
      AS
          DECLARE @table TABLE(SN nvarchar(500))
          INSERT INTO @table
          EXEC ProcB
      GO

      --执行失败  “INSERT EXEC 语句不能嵌套”

      EXEC ProcC

    ******只需要把ProcC里的insert into @table  改写成 set  @Sql='INSERT INTO @table' 就解决了,如果还有存储过程ProcD嵌套ProcC,也只需要ProcD的insert

      ALTER PROCEDURE ProcC
      AS
          DECLARE @table TABLE(SN nvarchar(500))
          DECLARE  @Sql nvarchar(2000)

        SET  @Sql='INSERT INTO @table'
          EXEC ProcB
      GO

      --执行成功

      EXEC ProcC

     


          
          

    SET  @Sql='INSERT INTO @table' 

  • 相关阅读:
    USACO Grass Planting
    洛谷 P3178 [HAOI2015]树上操作
    史上最全NOIP初赛知识点
    史上最全的CSP-J/S 第一轮知识点
    洛谷 P1886 滑动窗口
    背包九讲—简单背包
    NOIP 2005 采药
    洛谷 P2357 守墓人
    NOI 2015 软件包管理器
    洛谷 P3384 【模板】树链剖分
  • 原文地址:https://www.cnblogs.com/lydg/p/11362921.html
Copyright © 2020-2023  润新知