快速查询form界面的lov查询sql

26 篇文章 0 订阅
23 篇文章 0 订阅

在项目上经常会有功能顾问让我们去查找某个form的item对应的lov,最简单直接,也是最笨的方法是打开该from,定位item,定位lov, 运气好点,碰到LOV和Record Group都是固定的就一下找到了,运气不好有可能LOV是动态绑定到ITEM上,而LOV的RG是动态生成,想找个查询的SQL,可能要吐血.
下面介绍一个最简单的方法,这个方法共分三个步骤:
   1.Form界面,点击帮助->关于oracle应用产品获得会话sid值(即session_id)
    (如果你在这个界面没有看到会话sid值,去检查下你的FND:诊断这个配置文件的值是否为是)
   2.打开一个item的lov(注意打开后查询一个值,且不要关闭该值集框)

    3.在plsql中执行 如下sql脚本,输入sid值查看output就可以取得该lov的查询代码

DECLARE
  CURSOR CUR_LOV_SQL(P_PRE_SQL_ADDR VARCHAR2) IS
    SELECT T.SQL_TEXT
      FROM V$SQLTEXT_WITH_NEWLINES T
     WHERE T.ADDRESS = P_PRE_SQL_ADDR
     ORDER BY T.PIECE;
  -- 
  L_LOV_SQL       VARCHAR2(2400);
  L_PREV_SQL_ADDR VARCHAR2(200);
BEGIN
  BEGIN
    SELECT V.PREV_SQL_ADDR
      INTO L_PREV_SQL_ADDR
      FROM V$SESSION V
     WHERE V.SID = &SID;
  EXCEPTION
    WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('get prev sql addr error,' || SQLCODE || ':' ||
                           SQLERRM);
  END;
  -- 
  FOR REC IN CUR_LOV_SQL(L_PREV_SQL_ADDR) LOOP
    L_LOV_SQL := NVL(L_LOV_SQL,
                     '') || REC.SQL_TEXT;
  END LOOP;
  -- 
  DBMS_OUTPUT.PUT_LINE('lov查询sql为:');
  DBMS_OUTPUT.PUT_LINE(L_LOV_SQL);
END;

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值