一直有实施顾问询问我XXForm的XX LOV是什么逻辑,取数SQL是什么来着,以前比较笨,打开Form去看,运气好点,碰到LOV和Record Group都是固定的就一下找到了,运气不好有可能LOV是动态绑定到ITEM上,而LOV的RG是动态生成,想找个查询的SQL,可能要吐血,下面介绍一个最简单的方法,方便快捷而准确:
1.打开个性化定义界面(如果没有权限,到系统配置文件设置中,查看是否是"隐藏诊断菜单"被设置成了是),所以定义一个个性化,action如下图所示:
消息文本中的SQL语句是:"=(SELECT t.sid FROM v$mystat t where rownum = 1)",点击验证,获得当前SESSION 对应的sid,记录下来,例子中是102;
2.回到需要查询LOV界面随意输入数据,触发LOV的查询.
3.打开PL/SQL Dev,查询上一条和当前SQL的SQLADDRESS:
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;