首页 > 解决方案 > SQL 中可能会出现奇怪的会话范围反转

问题描述

如何将 #temp 表中的数据插入作为 varchar 变量传递的永久表中?

我问的是相反的转移:

Declare @anytable varchar(99)='perma'
--insertexec
Insert into #temptablecreatedalready
Exec('select * from '+ @anytable)

标签: sqlsql-servertsql

解决方案


不要在查询字符串中单独添加选择,而是尝试整个插入。

Declare @anytable = 'perma'
EXEC(
'Insert into ' + @anytable + '
select * from #temptablecreatedalready')

确保#temptablecreatedalready在执行查询字符串之前在当前会话中创建了表。


推荐阅读