gpt4 book ai didi

sql - 如何存储已执行过程的临时表?

转载 作者:行者123 更新时间:2023-12-03 03:13:14 26 4
gpt4 key购买 nike

我有以下代码:

SELECT @Name = [TrigTable] 
FROM [dbo].[setdevelopmentjob]
WHERE [TrigTable] IS NOT NULL

PRINT @Name

SET @sql = 'SELECT * FROM ' + @Name;

#TriggerTable = EXEC sp_executesql @sql;

SELECT * FROM #TriggerTable

显然,行#TriggerTable = Exec sp_executesql @sql是不正确的语法,但它显示了我正在尝试执行的操作。这些列是可变的,这意味着我不能只声明一个表变量。如何将此执行过程的输出传递给#TriggerTable

最佳答案

您可以使用 Select * into 方法将数据存储在全局临时表 (##) 中,并存储在 #temp 表中,您必须首先创建该表,我在使用动态 sql 时知道这一点,但您当然可以这样做在运行时,但您仍然可能需要一些物理表来访问它。

create table testtmp (id int, namen varchar(15)) 

--inserting the data into physical table
insert into testtmp (id, namen)

select 1 as ID, 'XYZ' as namen union all
select 2 as ID, 'ABC' as namen union all
select 3 as ID, 'DIG' as namen

create table #temp (ID int)

declare @sql nvarchar(max) = 'select ID from testtmp'
insert into #temp exec sp_executesql @sql

select * from #temp

Gives you this output:

ID
1
2
3

使用全局临时表,您可以轻松做到这一点,并且不必创建任何表,如果您愿意,您可以指定列名称。

 declare @sql nvarchar(max) = 'select * into ##Gloabltmptest from testtmp' 
exec sp_executesql @sql

select * from ##Gloabltmptest

输出:

 ID  namen
1 XYZ
2 ABC
3 DIG

还添加了表变量,类似于#temp 表。

declare @table table (IDtab int, nametab varchar(15)) 

declare @sql nvarchar(max) = 'select * from testtmp'
insert into @table exec sp_executesql @sql

select * from @table

关于sql - 如何存储已执行过程的临时表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55271641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com