我正在尝试填充临时表,以便稍后在存储过程中查询。因为我要填充多个表中的数据,所以我试图使用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语句在循环中进行处理:最初,我...
@temp_table
不是临时表,它是一个表变量。听起来有些古怪,但是在SQL Server中它们是不同的概念。