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

存储过程调用另一个存储过程的结果插入临时表问题!小弟不才,请教高手
我有两个存储过程A,和B
我想在A中调用B查询的结果放到临时表中做逻辑处理。
在知道B返回的结构时我知道用:
在存储过程A
      设置临时表#Temp格式和B返回格式一样
      INSERT   #Temp   exec   B   参数1,参数2,。。

      但是由于过程B我是用交叉表查询返回结果的格式是不清的,那该怎么做。
      我想用SELECT   *   INTO   #Temp   FROM   EXEC   B...,当是“FROM   EXEC”这样是不行了。
      在过程B中的语句:
      declare   @sql   varchar(4000)  
      set   @sql   =   'select   fUniqueID '  
      select   @sql   =   @sql   +   ',MAX(case   fName   when   ' ' '+fName+ ' ' '   then   fValue   end)   as   '+fName  
      from   (select   distinct   fName   from   v_WebOA_FlowedMessage_File)   as   a  
      set   @sql   =   @sql+ '   from   v_WebOA_FlowedMessage_File   group   by   fUniqueID '  
      exec(@sql)
     
      如果能在过程B中把结果放到临时表#Temp中也可以。但是我做了很久都无法搞出。得请高手帮助了

------解决方案--------------------
這麼試試

declare @sql varchar(4000)
set @sql = 'select fUniqueID '
select @sql = @sql + ',MAX(case fName when ' ' '+fName+ ' ' ' then fValue end) as '+fName
from (select distinct fName from v_WebOA_FlowedMessage_File) as a
set @sql = @sql+ ' Into ##Temp from v_WebOA_FlowedMessage_File group by fUniqueID ' --這裡使用全局臨時表#Temp
exec(@sql)

--查詢
Select * From ##Temp Where 条件

--刪除
Drop Table ##Temp
------解决方案--------------------
全局临时表,就像全局变量一样,一个进程创建后,在销毁前,别的进程再创建就会提示对象已存在。