首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

:存储过程之行列转换与全局临时表的有关问题:

2012-02-02 
::存储过程之行列转换与全局临时表的问题::在一存储过程中要用到行列转换:declare@sqlvarchar(4000)set@sq

::存储过程之行列转换与全局临时表的问题::
在一存储过程中要用到行列转换:
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一下。

热点排行