日期:2014-05-18  浏览次数:20419 次

求一个 存储过程 临时表的问题
SQL code

create proc test
@id
as
begin

    EXEC('select * into ##临时表 from 某表') 
    --下面代码对 ##临时表 这个表进行操作 
    
end



代码如上,我在存储过程经常用到 用EXEC('') 这种语句来将一个复杂的数据集转到一个全局临时表中,
来处理一些复杂的逻辑,但如果当 一个会话没有执行完这个存储过程时,##临时表 这个表是一直存在的,如果当前会话已执行完成 这个临时表会自动删除,
但如果未执行完
此时如果有另一个请求也要执行 test这个PROC,就会报错说表名已经存在。


求教朋友们这种情况下 应该怎么处理呀,或者有没有别的可以代替 打造 全局临时表的方案呀

注: ##临时表 这个表里的字段每次请求执行所创建的 列都各不相同。不是统一列名
偶分数 快没了,求方案,求帮忙呀




------解决方案--------------------
你不要使用全局临时表,使用局域临时表即可,这样不会影响到多用户操作.

create proc test
@id
as
begin

EXEC('select * into #临时表 from 某表') 
--下面代码对 #临时表 这个表进行操作 

end


------解决方案--------------------
SQL code
create table #临时表(...)

EXEC('insert #临时表(...) select * from 某表') 
    --下面代码对 #临时表 这个表进行操作