ITPub博客

首页 > 数据库 > Oracle > LOV查找

LOV查找

Oracle 作者:sir4darcy 时间:2015-09-23 14:54:31 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;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29834483/viewspace-1807242/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-08-31

  • 博文量
    30
  • 访问量
    69763