SELECT COLUMN_NAME FROM USER_TAB_COLS WHERE TABLE_NAME = 'B_AGENT';

解决方案 »

  1.   

    是select 选择的字段,不是具体的from 后面的某个表啊。怎么可能从数据字典取了?
      

  2.   

    定位第一个 select 和 from,把中间的取出来rtrim(ltrim(substr(sqltext,(instr(upper(sqltext),'SELECT')+6),(instr(upper(sqltext),'FROM')-(instr(upper(sqltext),'SELECT')+6))))例如:SQL> SELECT rtrim(
      2         ltrim(
      3         substr('select aaa,bbb from dual;',
      4                (instr(upper('select aaa,bbb from dual;'),'SELECT')+6),
      5                (instr(upper('select aaa,bbb from dual;'),'FROM')-(instr(upper('select aaa,bbb from dual;'),'SELECT')+6))
      6                )
      7         )) FROM dual;RTRIM(LTRIM(SUBSTR('SELECTAAA,
    ------------------------------
    aaa,bbbSQL>
      

  3.   

    我搞定了,呵呵,用了DBMS_SQL包的方法,可以取出列数,再循环取出列的名称就OK了