SQL 2008 R2 怎么将字符串的SQL语句添加到临时表
SQL 2008 R2 如何将字符串的SQL语句添加到临时表?
首先: 字符串@sql='' 这个是一个动态生成的SQL执行语句,这个是无法预料有多少列的(这些列都是根据另一张表求和的列)
我现在想要的是,把上面的SQL字符串执行exec后得到的表插到一个临时表。
我现在想不到什么办法?
考虑用全局临时表,但是我觉得这个很引发很多问题的。比如A用户查询他自己的,这个时候就相当于打开了一个数据库连接,这个时候A已经访问自己的数据,并插入到全局表##tmp, 那这个时候用户B也查询,那他是不是也要把数据插到全局表##tmp?
那是不是说A取到的数据其实是B的数据?(或者是说 全局表已经存在了,用户B 无法 select into了,直接报错?(当然,这个指A的没有执行到drop table的时候))
不知道我这样理解全局临时表对不对。
除了这个我还不知道怎么弄了,有说用另外一个存储带出参数的,我没太理解,怎么带出参数,我的表不固定,我都不知道从哪下手了
------解决思路----------------------
可以考慮下面的方法,只是提供大概的想法。
首先: 字符串@sql='' 这个是一个动态生成的SQL执行语句,这个是无法预料有多少列的(这些列都是根据另一张表求和的列)
我现在想要的是,把上面的SQL字符串执行exec后得到的表插到一个临时表。
我现在想不到什么办法?
考虑用全局临时表,但是我觉得这个很引发很多问题的。比如A用户查询他自己的,这个时候就相当于打开了一个数据库连接,这个时候A已经访问自己的数据,并插入到全局表##tmp, 那这个时候用户B也查询,那他是不是也要把数据插到全局表##tmp?
那是不是说A取到的数据其实是B的数据?(或者是说 全局表已经存在了,用户B 无法 select into了,直接报错?(当然,这个指A的没有执行到drop table的时候))
不知道我这样理解全局临时表对不对。
除了这个我还不知道怎么弄了,有说用另外一个存储带出参数的,我没太理解,怎么带出参数,我的表不固定,我都不知道从哪下手了
------解决思路----------------------
可以考慮下面的方法,只是提供大概的想法。
create table #tmp
(
....
)
declare @sql varchar(500)=''
set @sql='insert #tmp select fieldname from tablename'
exec(@sql)
select * from #tmp
drop table #tmp