【发布时间】: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 语句不能嵌套的错误。
【问题讨论】:
-
Bad habits to kick : declaring VARCHAR without (length) - 您应该始终为您使用的任何
varchar变量和参数提供长度。如果您仅使用varchar定义一个变量 - 那么您将获得一个可以保存恰好一个字符数据的变量 - 通常不是您想要的! -
DRIVEPOOL2它返回什么?还是只有一个带有一列的 select 语句?
标签: sql sql-server stored-procedures exec