我在动态查询中创建了临时表。
declare @sqlquery nvarchar(max)='select * into #table_1 from table where id=1'
exec(@sqlquery)
set @sqlquery='select * into #tmp_2 from #table_1'
exec(@sqlquery)
产出:-
无效的对象名称'#table_1‘。
发布于 2022-03-24 22:37:42
解决这个问题的方法有两种。
##table_1
1.将临时表声明为而不是 #table_1
现在,您的临时表可以在整个会话中访问,甚至可以在其他会话中访问。
这对我来说是正确的。
declare @sqlquery nvarchar(max)='select UserID into ##table_1 from tblUser'
exec(@sqlquery)
set @sqlquery='select * into #tmp_2 from ##table_1'
exec(@sqlquery)
也请参阅文档
2.在exec(@SqlQuery)范围外声明您的#table_1
create table #table_1 (id int)
declare @sqlquery nvarchar(max)='select UserID into #table_1 from tblUser'
exec(@sqlquery)
set @sqlquery='select * into #tmp_2 from #table_1'
exec(@sqlquery)
这是因为您在exec的作用域(@SqlQuery)之外创建了临时表。
https://stackoverflow.com/questions/71612962
复制