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

::存储过程之行列转换与全局临时表的问题::
在一存储过程中要用到行列转换:
declare   @sql   varchar(4000)
set   @sql   =   'select   material '
select   @sql=@sql+ ',sum(case   months   when   ' ' '+months+ ' ' '   then   qty   end)   [ '+months+ '] '   from   (select   distinct   months   from   #temp)   as   a
select   @sql=@sql+ '   from   #temp   group   by   material '
exec(@sql)

但转换的结果只在@sql定义的这个域内有效,所有要把结果放到一全局临时表里,以便在整个存储过程中都可用:
declare   @sql   varchar(4000)
set   @sql   =   'select   material '
select   @sql=@sql+ ',sum(case   months   when   ' ' '+months+ ' ' '   then   qty   end)   [ '+months+ '] '   from   (select   distinct   months   from   #temp)   as   a
select   @sql=@sql+ '   into   ##temp1   '                           --****************增加这一行
select   @sql=@sql+ '   from   #temp   group   by   material '
exec(@sql)

select   *   from   ##temp1                         --***************##temp1无效

运行存储过程,报错提示##temp1无效
这是什么原因呢,有什么其他的方法吗,谢谢

------解决方案--------------------
直接用#temp1 在外面就可以用.
------解决方案--------------------
select ... from exec .....

google一下。