使用此表变量:
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
语句的错误。
答案 0 :(得分:0)
似乎与此线程重复: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