如何把EXEC(@SQL)得到的结果集(列是动态的)插入到一张临时表

jbhou 2019-01-04 11:00:33
如何把EXEC(@SQL)得到的结果集(列是动态的)插入到一张临时表? 主要是列是动态的,没有办法先建立好表结构,请高手们帮忙,看看有什么办法,谢谢!
...全文
581 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白619 2019-11-22
  • 打赏
  • 举报
回复
我也遇到这个问题了,各种办法都尝试了,都不行,怎样将EXEC(@SQL)得到的结果集(列是动态的)插入到一张表里,然后再对这些数据进行处理呢
引用 楼主 jbhou 的回复:
如何把EXEC(@SQL)得到的结果集(列是动态的)插入到一张临时表? 主要是列是动态的,没有办法先建立好表结构,请高手们帮忙,看看有什么办法,谢谢!
武哥博文 2019-11-22
  • 打赏
  • 举报
回复
exec('select * into ##test from test where 1<>1') insert into ##test exec('select * from test') update ##test set col1 = 2 select * from ##test
二月十六 2019-01-05
  • 打赏
  • 举报
回复 1
列数不定的话需要用select * INTO 临时表这样写,试试全局临时表吧

DECLARE @SQL NVARCHAR(200)='select 1 as a,2 as b'

EXEC('select * into ##temp from('+@SQL+')t')

SELECT * from ##temp

DROP TABLE ##temp


netcup 2019-01-05
  • 打赏
  • 举报
回复
直接SELECT INTO XXOO exec(@sql) 然后再从xxoo这个临时表插入正式表,最后删除XXOO临时表即可。
吉普赛的歌 2019-01-05
  • 打赏
  • 举报
回复
二月版主的想法不错。 不过, 需要注意的是如果是程序中调用, 出现并发调用的话就会有问题了。 因为全局临时表是共用的, 如果并发调用同名称会出现冲突。 所以这个全局临时表的名称最好是随机产生的。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧