【发布时间】:2020-09-08 21:19:38
【问题描述】:
我正在尝试将动态 sql 的结果插入到临时表中。重要的是我事先不知道列名。根据SO suggestion,以下应该可以工作
INSERT into #T1 execute ('execute ' + @SQLString )
另外,如果 sql 字符串不是过程,则省略 EXECUTE。
但这不适用于 SQL 2017
CREATE TABLE Documents(DocumentID INT, Status NVARCHAR(10))
INSERT INTO Documents(DocumentID,Status)
VALUES
(1,'Active'),
(2,'Active'),
(3,'Active'),
(4,'Active')
DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = 'SELECT * FROM Documents'
INSERT into #T1 execute ('execute ' + @SQLString )
I get error `Invalid object name '#T1'.`
然后我尝试省略execute
INSERT into #T1 execute (@SQLString)
with same error `Invalid object name '#T1'.`
我应该可以
SELECT * FROM #T1
【问题讨论】:
-
可能是我,但您是在哪里创建 #T1 表,还是在您的问题中意外省略了它?如果您查看您提供的“SO Suggestion”链接,表格确实会在那里创建
标签: tsql