APEX LOV显示值参考

时间:2012-11-06 16:11:16

标签: oracle-apex lov

这个与我们有关的问题:APEX LOV Display value look up Tony Andrews建议做的事情:

select display_value
from apex_application_lov_entries
where application_id = 123
and list_of_values_name = 'DEPT_LOV'
and return_value = :p1_deptno;

这似乎引用了应用程序级别的LOV条目;有没有办法查询页面项中定义的LOV?

我希望能够做的是使用变量来引用LOV的显示值,而不是它的返回值。因此,如果我在名为P2_TERM_SELECT的项目中有LOV,那么:P2_TERM_SELECT.将给出其返回值,但是其显示值是否还有另一个变量?

2 个答案:

答案 0 :(得分:0)

为方便起见,为什么不将页面项lov转换为共享组件中的lov?我的意思是,可能有一种方法可以从项目中检索它,但这不会像杂乱一样吗?你在哪里需要显示值:在plsql或页面本身?如果在页面本身,总是有javascript。

Tony使用的查询是从静态LOV中检索条目的查询。当LOV包含SQL时,它将不那么明确。

您可以检索页面项目LOV的设置:

SELECT lov_definiation
FROM APEX_APPLICATION_PAGE_ITEMS
WHERE application_id = 123
AND page_id = 1
AND item_name = 'P1_DEPTNO';

但是,这只会返回一个字符串。 select语句将是一个字符串。如果已定义静态值列表,则返回也将是一个字符串:与您在定义中看到的字符串相同。例如:

STATIC2:SALES;10,RESEARCH;20

除了apex_plugin_util之外,我不知道解析的内置方法,但我认为这不是使用它的地方。除非您想自己推送(编辑:我尝试使用apex_plugin_util.get_data,但它不适用于STATIC2格式)。

我会认真考虑你在做什么以及它将如何增加复杂性。如果您要使用静态lov,我建议使用共享组件LOV,或者考虑使用查找表作为值。

答案 1 :(得分:-1)

  1. 在顶点中没有像页面级别的lov那样的东西。当您创建lov时,它始终是共享组件的一部分,并且是应用程序级别。

  2. P2_TERM_SELECT lov项始终返回您在返回值中提供的内容。

    所以,在你的场景中,如果你想要描述值:P2_TERM_SELECT那么一个想法就是 有一个LOV查询,如下例所示:

    选择display_value disp,return_value || ':'|| display_value从some_table返回。

    然后从P2_TERM_SELECT项目中获取显示值 然后做substr(:P2_TERM_SELECT,INSTR(:P2_TERM_SELECT,':')+ 1,LENGTH(:P2_TERM_SELECT))

  3. 日Thnx

    MK