select sys_connect_by_path(column_name, ',') -- select *
from user_tab_columns 
where table_name='EMP'
connect by prior column_id+1=column_id
start with column_id=1这段SQL一直在Executing...,几分钟都未完成,象是出现了死循环,请问哪里错了?

解决方案 »

  1.   


    select sys_connect_by_path(column_name, ',')
      from user_tab_columns 
     where connect_by_isleaf = 1
    connect by prior column_id = column_id - 1 and prior table_name = table_name
    start with table_name='EMP' and column_id = 1;
      

  2.   

    我的写法中table_name='EMP'应该最后才判断的,所以慢了。
    我发现下面的写法更快些:select sys_connect_by_path(column_name, ',') -- select *
    from (select * from user_tab_columns 
    where table_name='EMP')
    connect by prior column_id+1=column_id
    start with column_id=1