怎麼得取一條SQL語句中包含哪些Table?

最近在開發一個統計工具,需要取得某支程式使用到了哪些Table,我將其分為兩個步驟,首先得到程式用到了哪些SQL語句,再取得SQL語句使用到了哪些Table,但我不知道怎麼從SQL中取得Table內容,因為SQL的語法複雜,變化太多,沒有什麼規律.大致我想到的SQL類型有如下幾種,請大家幫忙看看通過什麼方式可以取得?

1.select * from T_a;
2.select * from t_a,t_b;
3.select * from t_a,(select * from t_b) where .......
4.select * from t_a
    union
    select * from t_b;
我也来说两句 查看全部回复

最新回复

  • Hopewell_Go (2008-7-12 16:43:53)

    你可以根据一个规则。。from后面的进行分析。。如果是(就继续往下,不是就是有。。
  • vnsoft (2008-7-14 13:20:08)

    我也有試著想這樣分析,但還沒有找出比較好的規律,還要思考中......
  • valenwon (2008-7-14 14:01:31)

    你把 all_tables 里面的每一个table 名称,做一个list,
    在每条SQL里面循环list判断有没有instr  tablename

    这样肯定可以做,但是效率不会好。

    可以考虑oracle全文索引。
  • vnsoft (2008-7-16 08:05:15)

    這樣根據現有的Table名來查找是不好的,因為可能有些Table是另外的帳號或DBLINK來使用的,這樣就找不到.

    期待有更好的實現方法.