gpt4 book ai didi

sql-server - 动态查询结果进入临时表或表变量

转载 作者:行者123 更新时间:2023-12-03 16:45:30 24 4
gpt4 key购买 nike

我有一个使用sp_executesql生成结果集的存储过程,结果中的列数可以变化,但是将采用Col1 Col2 Col3等形式。

我需要将结果放入临时表或表变量中,以便可以使用它。问题是我需要定义临时表的列,我无法使用sp_executesql动态地执行此列,因为执行命令后临时表的范围会丢失。

我想过要使用全局临时表的想法,因为范围允许动态创建它,但是,很有可能通过该过程的并发执行来更新全局临时表。

有任何想法吗?

最佳答案

我在这篇文章T-SQL Dynamic SQL and Temp Tables中找到了在@SQLMenace的帮助下适合我的解决方案

简而言之,我需要先在普通SQL中创建一个#temp表,然后才能使用其他动态SQL语句更改结构。在此示例中,@ colcount设置为6。当我实现此功能时,它将由另一个存储的proc确定。

IF object_id('tempdb..#myTemp') IS NOT NULL
DROP TABLE #myTemp

CREATE TABLE #myTemp (id int IDENTITY(1,1) )
DECLARE @cmd nvarchar(max)
DECLARE @colcount int
SET @colcount = 6
DECLARE @counter int
SET @counter = 0
WHILE @counter < @colcount
BEGIN
SET @counter = @counter + 1
SET @cmd = 'ALTER TABLE #myTemp ADD col' + CAST(@counter AS varchar(4)) + ' NVARCHAR(MAX)'
EXEC(@cmd)
END

INSERT INTO #myTemp
EXEC myProc @param1, @param2, @param3

SELECT * FROM #myTemp

关于sql-server - 动态查询结果进入临时表或表变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6100314/

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