zoukankan      html  css  js  c++  java
  • 存储过程"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' 

  • 相关阅读:
    Django使用redis
    Django中static media的简单配置
    套接字,TCP,UDP
    nginx常用配置
    使用systemctl管理nginx
    jumpserver 安装
    elasticsearch7.x集群安装(含head、bigdesk、kibana插件)
    codepush安装
    mysql优化后的主配置文件
    nginx优化、负载均衡、rewrite
  • 原文地址:https://www.cnblogs.com/lydg/p/11362921.html
Copyright © 2011-2022 走看看