我正在尝试使用动态 sql (MS SQL Server 13.0.5426) 创建一个临时表。这是一个简化的例子:
使用直接 SQL 可以:
DROP TABLE #tmp_ts; -- will error, but ignored on the first execution
SELECT CURRENT_TIMESTAMP ts INTO #tmp_ts;
SELECT * FROM #tmp_ts;
通过动态 SQL 创建它不起作用。
DROP TABLE #tmp_ts; -- drop from previous test.
EXEC sp_executesql N'SELECT CURRENT_TIMESTAMP ts INTO #tmp_ts';
SELECT * FROM #tmp_ts;
输出:
(受影响的 1 行)
消息 208,级别 16,状态 0,第 63 行无效的对象名称“#tmp_ts”。
我的解决方法是不使用临时表,但我很好奇是否有人知道为什么这不起作用。
谢谢!