这看起来比较简单,但显然并非如此。
我需要通过 select into 语法基于现有表创建临时表:
SELECT * INTO #TEMPTABLE FROM EXISTING_TABLE
问题是,现有的表名称是通过参数接受的......
我可以通过以下方式获取表的数据:
execute ('SELECT * FROM ' + @tableName)
但我如何将两者结合起来,以便我可以将执行结果直接放入临时表中。
将要使用的每个表的列都不相同,因此在获取数据之前构建临时表是不切实际的。
除了使用全局临时表之外,我愿意接受任何建议。
Update:
这完全是荒谬的,但我对全局临时表的保留是,这是一个多用户平台,如果该表长时间徘徊,就会出现问题......
Sooo..为了完成这一部分,我开始使用execute 生成全局临时表。
execute('select * into ##globalDynamicFormTable from ' + @tsFormTable)
然后,我使用全局临时表加载本地临时表:
select * into #tempTable from ##globalDynamicFormTable
然后我删除全局表。
drop table ##globalDynamicFormTable
这很脏,我不喜欢它,但目前,在我找到更好的解决方案之前,它必须起作用。
到底:
我想没有办法绕过它。
最好的答案似乎是:
创建一个view在执行命令中并使用它来加载存储过程中的本地临时表。
创建一个全局临时表在执行命令中并使用它来加载本地临时表。
话虽如此,我可能会坚持使用全局临时表,因为创建和删除视图在我的组织中经过审核,并且我确信他们会质疑这种情况是否一直发生。
Thanks!