2

这个与我们相关的问题: APEX LOV 显示值在 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 的显示值,而不是它的返回值。因此,如果我在一个名为的项目中有一个 LOV,P2_TERM_SELECT那么 :P2_TERM_SELECT.将给出它的返回值,但是它的显示值是否还有另一个变量?

4

2 回答 2

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

  2. P2_TERM_SELECT lov 项总是返回您在返回值中给出的值。

    因此,在您的场景中,如果您想要来自 :P2_TERM_SELECT 的描述值,那么一个想法是进行 LOV 查询,如下例所示:

    选择显示值显示,返回值 || ':' || 来自 some_table 的 display_value ret。

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

谢谢

MK

于 2012-11-06T20:19:30.957 回答
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';

但是,这将只返回一个字符串。选择语句将是一个字符串。如果您定义了一个静态值列表,那么返回也将是一个字符串:与您在定义中看到的相同。例子:

STATIC2:SALES;10,RESEARCH;20

除了可能在 apex_plugin_util 中之外,我不知道一种内置的解析方式,但我认为这几乎不是使用它的地方。除非您想自己推出(编辑:我尝试使用apex_plugin_util.get_data,但它不适用于该STATIC2格式)。

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

于 2012-11-06T18:20:36.253 回答