语句如下:declare @sql   varchar(200) 
declare @table_name varchar(20)
declare cur_temp cursor for
select name from MTMOLOG..sysobjects where name like '%mt_log_%'  and xtype='u'
open cur_temp
fetch next from cur_temp into @table_name
while @@fetch_status=0
begin
if @sql=''
  Select   @sql='select  *  from MTMOLOG..'+@table_name
else
begin
  select  @sql=@sql+' union select * from mtmolog..'+@table_name
end
execute(@sql)
fetch next from cur_temp into @table_name
end 
close cur_temp
deallocate cur_temp

解决方案 »

  1.   

    declare @sql   varchar(8000)  --改长点
    set sql='' --赋初值
    declare @table_name varchar(20)
    declare cur_temp cursor for
    select name from MTMOLOG..sysobjects where name like '%mt_log_%'  and xtype='u'
    open cur_temp
    fetch next from cur_temp into @table_name
    while @@fetch_status=0
    begin
    if @sql=''
      Select   @sql='select  *  from MTMOLOG..'+@table_name
    else
    begin
      select  @sql=@sql+' union select * from mtmolog..'+@table_name
    end
    execute(@sql)
    fetch next from cur_temp into @table_name
    end 
    close cur_temp
    deallocate cur_temp
      

  2.   

    declare @sql varchar(8000)  --改长点
    set @sql='' --赋初值
    declare @table_name varchar(20)
    declare cur_temp cursor for
    select name from MTMOLOG..sysobjects where name like '%mt_log_%'  and xtype='u'
    open cur_temp
    fetch next from cur_temp into @table_name
    while @@fetch_status=0
    begin
    /*
    if @sql=''
      Select   @sql='select  *  from MTMOLOG..'+@table_name
    else
    begin
      select  @sql=@sql+' union select * from mtmolog..'+@table_name
    end
    */
    select @sql=@sql+'select * from mtmolog..'+@table_name+' union all '
    fetch next from cur_temp into @table_name
    end 
    close cur_temp
    deallocate cur_temp
    select @sql=left(@sql,len(@sql)-len(' union all '))
    execute(@sql) --放到游标外面执行
      

  3.   

    谢谢gahade(与君共勉) 
    我试试@~!