存儲過程"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'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM