【问题标题】:Calling a stored procedure from another procedure从另一个过程调用存储过程
【发布时间】:2018-07-21 05:19:57
【问题描述】:

使用这个表变量:

DECLARE @ReturnValue VARCHAR
DECLARE @OUT_MAIN_ERROR VARCHAR
DECLARE @Result VARCHAR(50)

BEGIN
    DECLARE @TableVariable TABLE (result VARCHAR(50))

    INSERT INTO @TableVariable  
        EXEC [dbo].[DRIVEPOOL2]

    SELECT result 
    FROM @TableVariable
END

使用临时表:

DECLARE @ReturnValue VARCHAR
DECLARE @OUT_MAIN_ERROR VARCHAR
DECLARE @Result VARCHAR(50)

BEGIN
    CREATE TABLE #kola(result VARCHAR(50))

    INSERT INTO #kola  
        EXEC [dbo].[DRIVEPOOL2]

    SELECT * 
    FROM #kola

    DROP TABLE #kola
END

我得到错误:

消息 8164,级别 16,状态 1,过程 DRIVEPOOL2,第 45 行 [批处理开始第 3 行]
不能嵌套 INSERT EXEC 语句。

我尝试过使用临时表和表变量,两者都抛出INSERT EXEC 语句不能嵌套的错误。

Drive Pool Procedure for Reference - Github

【问题讨论】:

标签: sql sql-server stored-procedures exec


【解决方案1】:

似乎与此线程重复:INSERT EXEC Statement cannot be nested

调用存储过程并插入 将存储过程的结果存入表或表变量(INSERT ... EXECUTE) 并且被调用的存储过程已经包含一个 在其主体中插入 ... EXECUTE 语句。

在此处阅读有关此错误的更多信息:http://www.sql-server-helper.com/error-messages/msg-8164.aspx

你可以试试OPENROWSET来解决这个问题

INSERT INTO @TableVariable ( col1, col2, col3,... )
SELECT SP.*
FROM OPENROWSET('SQLNCLI', '[Your connection string]','EXECUTE [dbo].[DRIVEPOOL2]') AS SP

【讨论】:

    猜你喜欢
    • 2014-09-17
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多