在t-sql执行语句中填充临时表

问题描述 投票:0回答:1

我正在尝试填充临时表,以便稍后在存储过程中查询。因为我要填充多个表中的数据,所以我试图使用EXEC语句在循环中进行处理:

最初,我从动态SQL中收到一个错误,我必须声明表变量。我这样做,但是动态SQL之外的SQL在临时表中看不到数据。这是我的SQL的样子:

--Original Query:

DECLARE @sql2 varchar(8000)

set @sql2 = 'INSERT INTO @temp_table SELECT  TOP 10 my_id, my_text FROM my_dynamic_table'
exec(@sql2)

select * from @temp_table  --Normal query

必须在s et @ sql2 ='INSERT ...]行上声明表变量“ @temp_table”

DECLARE @sql2 varchar(8000)

DECLARE @temp_table TABLE(my_id bigint NULL, my_text text NULL)

set @sql2 = 'DECLARE @temp_table TABLE(my_id bigint NULL, my_text text NULL);INSERT INTO @temp_table SELECT  TOP 10 my_id, my_text FROM my_dynamic_table;select * from @temp_table;'
exec(@sql2)

select * from @temp_table  --Normal query

我在运行exec(@ sql2)时看到数据,在普通查询中看不到。

我正在尝试填充临时表,以便稍后在存储过程中查询。因为我要填充多个表中的数据,所以我试图使用EXEC语句在循环中进行处理:最初,我...

sql sql-server tsql dynamic-sql temp-tables
1个回答
2
投票

@temp_table不是临时表,它是一个表变量。听起来有些古怪,但是在SQL Server中它们是不同的概念。

© www.soinside.com 2019 - 2024. All rights reserved.