如题,在线等declare @sql varchar(8000)
set @sql='select  ( '
select @sql = @sql  +'''' + unit_short_name + ',' +''''
from (select distinct unit_short_name,unit_id from unit_info) as a
set @sql = @sql +') as unit_short_name'exec(@sql) 

解决方案 »

  1.   


    declare
      strsql varchar2(4000); --varchar2最大4000
      strunit_short_name varchar2(2000);
      strunit_id varchar2(500);
    begin
      strsql := 'select unit_short_name,unit_id from (select distinct unit_short_name,unit_id from unit_info) as a'; --语句自己拼写
      execute immediate strsql into strunit_short_name,strunit_id;
      ...
    end;
      

  2.   

    不是你想的那样的 
    select @sql = @sql  +'''' + unit_short_name + ',' +''''
    from (select distinct unit_short_name,unit_id from unit_info) as a这句话是有循环的  如果照你那样拼的话就没循环了 
      

  3.   


    有循环你就改下strsql
    strsql := 'select ';
    for  loop
      strsql := strsql || ' unit_short_name ';
      ...
    end loop;
    execute immediate strsql into strunit_short_name,strunit_id;
    ...
      

  4.   

    语法就是这个
    execute immediate strsql into strunit_short_name,strunit_id;
    至于怎么拼sql 那是逻辑问题啊