2013年10月1日 星期二

查看LOV中的查詢語句


    一直有實施顧問詢問我XXFormXX LOV是什麼邏輯,取數SQL是什麼來著,以前比較笨,打開Form去看,運氣好點,碰到LOVRecord Group都是固定的就一下找到了,運氣不好有可能LOV是動態綁定到ITEM,LOVRG是動態生成,想找個查詢的SQL,可能要吐血,下面介紹一個最簡單的方法,方便快捷而準確:
1.打開個性化定義介面(如果沒有許可權,到系統配置檔設置中,查看是否是"隱藏診斷功能表"被設置成了是),所以定義一個個性化,action如下圖所示:


消息文本中的SQL語句是:"=(SELECT t.sid FROM v$mystat t where rownum = 1)",點擊驗證,獲得當前SESSION 對應的sid,記錄下來,例子中是102;
2.回到需要查詢LOV介面隨意輸入資料,觸發LOV的查詢.
3.打開PL/SQL Dev,查詢上一條和當前SQLSQLADDRESS
SELECT s.prev_sql_addr,s.sql_address FROM v$session s WHERE s.sid = 102;
(有可能查詢的間隔比較短,當前執行的SQL語句在sql_address 欄位中)


4.根據SQLaddress查詢對應的SQL語句
SELECT sql_text FROM v$sqltext_with_newlines t WHERE t.address = '0000000390E496F0' ORDER BY t.piece;


沒有留言:

張貼留言