RT,举例如下:
select t1.*,t2.a+t2.b as x,t2.c from table1 t1,table2 t2 where t1.id=t2.id; 返回的应该是t1的全部字段和t2的a、b、c。
最好要考虑函数、+-*/、子查询、别名等等情况。求大神详解

解决方案 »

  1.   

    意思就是给定一个 sql(select),  怎么得到这个sql 查了哪些列名,
    比如select *  from 表a; 这句sql  是查了 表a的所有列名。
      

  2.   

    我能理解楼主的意思 但是我也不知道怎么实现
    楼主想要的效果是 写一个函数 参数是一个sql 返回值是这个sql查询的所有列
    举例 sql=“select a.* from a” 假设a中有 name,id,value三个列,那么
    select getColumnFromSql(sql) from dual 的结果就是 “name,id,value”
     
    我之前也做过很多尝试 自己截取的话,应该可以实现,就是把select和from之间的部分拿出来,然后一个一个的解析,遇到*,就把from 和where之间的表里所有的字段 在数据字典里查出来
    但是有一个缺点 如果sql很复杂,有嵌套查询,截取的时候就会非常麻烦 所以我最终放弃了这个想法
    不知道oracle有没有提供类似的功能 百度 谷歌 都没有太大的收获 有人说dbms_sql包里可能会有 我找了找 没发现有能满足这种需求的
    楼主如果解决了 麻烦分享一下 谢谢了