问题描述
嗨,
我试图弄清楚如何从Apex视图apex_application_page_items中提取用于我的一个应用程序中的各种选择列表和LOV的表的名称。
我可以从这个脚本中获得我想要的基本信息:
但是作为新视图的一部分,我也想以某种方式从lov_definition中提取查找表的表名。动态查询 (视图) 将使这比手动保持表更新容易得多。
似乎从简单的选择列表中提取名称,例如:
应该很简单,但我就是想不出来。在上面的示例中,我想拉出 “lu_water_coll_protocol” 作为查找表名称。
然后当然,尝试从更复杂的代码中提取它,例如返回SQL的PL/SQL函数要困难得多 (至少对我而言)。对于我的使用,我已经添加了 'lu_ '前缀到我的所有查找表,所以也许从DBA_TABLES中提取table_names会让它变得更容易,但我仍然对如何实现这一点不知所措。
我希望很快退休,我正在努力让任何接替我的人尽可能轻松地工作。
我不认为我需要创建一个测试用例,因为我 “认为” 你可能可以使用你自己的模式来完成我认为我需要的,而且看起来这已经是一个Apex应用程序,有几个选择列表/LOV。
我试图弄清楚如何从Apex视图apex_application_page_items中提取用于我的一个应用程序中的各种选择列表和LOV的表的名称。
我可以从这个脚本中获得我想要的基本信息:
SELECT page_id,
page_name,
item_name,
label,
display_as,
lov_named_lov,
lov_definition,
condition_type,
condition_expression1,
condition_expression2
FROM apex_application_page_items
WHERE application_id = 221
AND (display_as = 'Select List' OR display_as = 'Popup LOV')但是作为新视图的一部分,我也想以某种方式从lov_definition中提取查找表的表名。动态查询 (视图) 将使这比手动保持表更新容易得多。
似乎从简单的选择列表中提取名称,例如:
select protocol_description d, protocol_description r from lu_water_coll_protocol order by sort_order
应该很简单,但我就是想不出来。在上面的示例中,我想拉出 “lu_water_coll_protocol” 作为查找表名称。
然后当然,尝试从更复杂的代码中提取它,例如返回SQL的PL/SQL函数要困难得多 (至少对我而言)。对于我的使用,我已经添加了 'lu_ '前缀到我的所有查找表,所以也许从DBA_TABLES中提取table_names会让它变得更容易,但我仍然对如何实现这一点不知所措。
我希望很快退休,我正在努力让任何接替我的人尽可能轻松地工作。
我不认为我需要创建一个测试用例,因为我 “认为” 你可能可以使用你自己的模式来完成我认为我需要的,而且看起来这已经是一个Apex应用程序,有几个选择列表/LOV。
专家解答
这似乎是对LOVs的更狭隘关注,现实不是吗?
例如,LOV可能是
-静态值
-一个简单的select语句
-十路加入15个联盟所有声明
-带有8个子查询的嵌套SQL
等等等等
因此,爱中的 “表” 概念并不真正存在。
你能做的一件事是
-对于您提供的查询结果中的每一行
-如果定义不以 “静态” 或句点开始,则
-对内容进行解释计划
-在连接到所有表的plan_table上运行select distinct object_name到潜在表
那里仍然有很多差距,但你明白了。
例如,LOV可能是
-静态值
-一个简单的select语句
-十路加入15个联盟所有声明
-带有8个子查询的嵌套SQL
等等等等
因此,爱中的 “表” 概念并不真正存在。
你能做的一件事是
-对于您提供的查询结果中的每一行
-如果定义不以 “静态” 或句点开始,则
-对内容进行解释计划
-在连接到所有表的plan_table上运行select distinct object_name到潜在表
那里仍然有很多差距,但你明白了。
SQL> variable s varchar2(1000) SQL> SQL> exec :s := 'select * from emp e, dept d where d.deptno = e.deptno' PL/SQL procedure successfully completed. SQL> SQL> delete plan_table; 6 rows deleted. SQL> exec execute immediate 'explain plan into plan_table for '||:s; PL/SQL procedure successfully completed. SQL> SQL> select t.table_name 2 from dba_tables t, 3 plan_table p 4 where t.owner = p.object_owner 5 and t.table_name = p.object_name; TABLE_NAME ------------------------------ DEPT EMP SQL> SQL> SQL> select listagg(t.table_name,',') within group ( order by t.table_name) 2 from dba_tables t, 3 plan_table p 4 where t.owner = p.object_owner 5 and t.table_name = p.object_name; LISTAGG(T.TABLE_NAME,',')WITHINGROUP(ORDERBYT.TABLE_NAME) ------------------------------------------------------------------------------------------- DEPT,EMP
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




