把这一句放到QUERY里面执行不就可以了吗?

解决方案 »

  1.   

    我说的是在存储过程中:
    exec "select * from "+@table1
    如何将结果集,存入一个表变量中。
      

  2.   

    EXEC sp_serveroption 'ServerName','DATA ACCESS','TRUE'
    GO
    SELECT * INTO #temptable 
    FROM OPENQUERY(ServerName,'EXEC(''SELECT * FROM TableName'')')
      

  3.   

    to:
    N_chow(一劍飄香) 怎么要服务器名啊,我就在一台机器上run,
    还有类似的方法吗?不要用服务器名的。。谢谢
      

  4.   

    to: jinfeng_wang
     
    exec "select * into #temptable  from "+@table1
    你的方法我想过了因为程序会有多次的计算,用临时表效率太低。帮忙再想想有没好办法·~~
      

  5.   

    “返回Table型变量”
    请给个例子·~!!!
      

  6.   

    CREATE PROCEDURE gdoutputb(
    @bumen as char(3)
    ) AS
    declare @line as char(3)
    declare @tline as char(3)
    declare @color as char(6)   --对应的颜色
    declare @riqi as smalldatetime
    declare @gdid as varchar(20)
    declare @tname as varchar(20)
    declare @liang as int
    declare @gdin as int
    declare @remain as int
    declare @dairu as int
    declare @daiyan as int
    declare @dairew as int
    declare @man as varchar(10)
    declare @tdelay as smallint
    declare @re as varchar(400)
    declare @mk as varchar(100)
    declare @mp as varchar(100)
    declare @triqi as char(10)
    declare @lpd as int
    declare @lmp as int
    declare @lmk as int
    declare @lrd as int
    declare @ldqa as int
    declare @loqa as int
    declare @lelse as intcreate table #repp
    (
    aline char(3),
    alines char(6),
    ariqi varchar(10),
    ariqis char(6),
    agdid varchar(20),
    agdids char(6),
    atname varchar(20),
    atnames char(6),
    aliang int,
    aliangs char(6),
    agdin int,
    agdins char(6),
    aremain int,
    aremains char(6),
    adairu int,
    adairus char(6),
    adaiyan int,
    adaiyans char(6),
    adairew int,
    adairews char(6),
    aman varchar(10),
    amans char(6),
    atdelay smallint,
    atdelays char(6),
    are char(400),
    ares varchar(6),
    amk char(100),
    amks varchar(6),
    amp char(100),
    amps varchar(6)
    )
    if (@bumen<>'all') 
    begin
    ----PD不良数
       select @lpd=count(*) from gddata where man like 'p%' or man like 'L%' 
       ----MP不良数
       select @lmp=count(*) from gddata where man like 'mp%' 
       ----mk不良数
       select @lmk=count(*) from gddata where man like 'mk%' 
       select @lrd=count(*) from gddata where man like 'rd%'
       select @ldqa=count(*) from gddata where man like 'dqa%'
       select @loqa=count(*) from gddata where man like 'qa%'
       select @lelse=count(*) from gddata where man like ''    
       insert into #repp values(@lpd,@lmp,@lmk,@lrd,@ldqa,@loqa,@lelse,@color,@liang,@color,@gdin,@color,@remain,@color,@dairu,@color,@daiyan,@color,@dairew,@color,@man,@color,@tdelay,@color,@re,@color,@mk,@color,@mp,@color) 
       
    declare gdtemp cursor for select line,riqi,gdid,tname,liang,gdin,remain,dairu,daiyan,dairew,man,tdelay,re,mk,mp from gddata where rtrim(man)=@bumen order by riqi desc
    open gdtemp 
    fetch next from gdtemp into @line,@riqi,@gdid,@tname,@liang,@gdin,@remain,@dairu,@daiyan,@dairew,@man,@tdelay,@re,@mk,@mp
    while @@fetch_status=0
    begin
       select @tdelay=datediff(day,@riqi,getdate())
       if (@tdelay<=1) 
         begin
        select @color='00ff00'            ---显示绿色
         end   
       if (@tdelay=2) or (@tdelay=3)
        begin
        select @color='ffff00'            ---显示黄色
        end
       if (@tdelay>=4)
        begin 
        select @color='ff99ff'            ---显示红色  
        end
       select @triqi=convert(char(4),datepart(year,@riqi))+'-'+convert(char(2),datepart(month,@riqi))+'-'+convert(char(2),datepart(day,@riqi))
       insert into #repp values(@line,@color,@triqi,@color,@gdid,@color,@tname,@color,@liang,@color,@gdin,@color,@remain,@color,@dairu,@color,@daiyan,@color,@dairew,@color,@man,@color,@tdelay,@color,@re,@color,@mk,@color,@mp,@color)fetch next from gdtemp into @line,@riqi,@gdid,@tname,@liang,@gdin,@remain,@dairu,@daiyan,@dairew,@man,@tdelay,@re,@mk,@mp
    end
    close gdtemp 
    deallocate gdtemp
       
    endif (@bumen='all') -------------按线别列出所有
    begin
    ----PD不良数
       select @lpd=count(*) from gddata where man like 'p%' or man like 'L%' 
       ----MP不良数
       select @lmp=count(*) from gddata where man like 'mp%' 
       ----mk不良数
       select @lmk=count(*) from gddata where man like 'mk%' 
       select @lrd=count(*) from gddata where man like 'rd%'
       select @ldqa=count(*) from gddata where man like 'dqa%'
       select @loqa=count(*) from gddata where man like 'qa%'
       select @lelse=count(*) from gddata where man like ''    
       insert into #repp values(@lpd,@lmp,@lmk,@lrd,@ldqa,@loqa,@lelse,@color,@liang,@color,@gdin,@color,@remain,@color,@dairu,@color,@daiyan,@color,@dairew,@color,@man,@color,@tdelay,@color,@re,@color,@mk,@color,@mp,@color) 
       
    declare gdline cursor for select line from tline order by tindex
    open gdline
    fetch next from gdline into @tline
    while @@fetch_status=0
    begin
    declare gdtemp cursor for select line,riqi,gdid,tname,liang,gdin,remain,dairu,daiyan,dairew,man,tdelay,re,mk,mp from gddata where line=@tline order by riqi desc
    open gdtemp 
    fetch next from gdtemp into @line,@riqi,@gdid,@tname,@liang,@gdin,@remain,@dairu,@daiyan,@dairew,@man,@tdelay,@re,@mk,@mp
    while @@fetch_status=0
    begin
       select @tdelay=datediff(day,@riqi,getdate())
       if (@tdelay<=1) 
         begin
        select @color='00ff00'            ---显示绿色
         end   
       if (@tdelay=2) or (@tdelay=3)
        begin
        select @color='ffff00'            ---显示黄色
        end
       if (@tdelay>=4)
        begin 
        select @color='ff99ff'            ---显示红色  
        end
       select @triqi=convert(char(4),datepart(year,@riqi))+'-'+convert(char(2),datepart(month,@riqi))+'-'+convert(char(2),datepart(day,@riqi))
       insert into #repp values(@line,@color,@triqi,@color,@gdid,@color,@tname,@color,@liang,@color,@gdin,@color,@remain,@color,@dairu,@color,@daiyan,@color,@dairew,@color,@man,@color,@tdelay,@color,@re,@color,@mk,@color,@mp,@color)fetch next from gdtemp into @line,@riqi,@gdid,@tname,@liang,@gdin,@remain,@dairu,@daiyan,@dairew,@man,@tdelay,@re,@mk,@mp
    end
    close gdtemp 
    deallocate gdtempfetch next from gdline into @tline
    end
    close gdline
    deallocate gdlineend
    select * from #repp 
    drop table #repp
    GO
      

  7.   

    to: firebing(初学者) 一大堆代码,-_-早就说不用临时表了,没看上面的帖子吗?
      

  8.   

    http://www.csdn.net/expert/topic/881/881201.xml?temp=.3257868
      

  9.   

    insert into TableName exec ProduceName
    select * from TableName