Plsql 从ApEx中的数据库集合对象创建LOV

Plsql 从ApEx中的数据库集合对象创建LOV,plsql,oracle-apex,Plsql,Oracle Apex,我试图在ApEx中创建一个基于集合对象中存储的值的选择列表 基本上,我正在运行一个调用java类的存储过程,该类设置varchar2数组的值 要获取值并将其打印到dbms输出,我可以运行以下PLSQL块: DECLARE vArray testschema.stringarray_type := testschema.stringarray_type(); BEGIN testschema.getLOV(vArray); FOR i IN 1..vArray.COUNT

我试图在ApEx中创建一个基于集合对象中存储的值的选择列表

基本上,我正在运行一个调用java类的存储过程,该类设置varchar2数组的值

要获取值并将其打印到dbms输出,我可以运行以下PLSQL块:

DECLARE
    vArray testschema.stringarray_type := testschema.stringarray_type();
BEGIN
    testschema.getLOV(vArray);

    FOR i IN 1..vArray.COUNT LOOP
        DBMS_OUTPUT.PUT_LINE('Counter: ' || i || ' Value: "' || vArray(i) || '".');
    END LOOP;

END;
现在我只需要将所有这些值放入一个选择列表,而不是打印出来

我如何重写此PLSQL代码以替代select列表的LOV源代码

有没有一种方法可以让我更改代码来执行以下操作:

FOR i IN 1..vArray.COUNT LOOP
    :P1_SELECT_LIST.append(vArray(i));
END LOOP;
BEGIN
    return 'select column_value d, column_value r from table(testschema.getLOV())';
END;
然后用动态动作或者别的什么来运行它

谢谢

编辑:

我做了一个临时解决方案,现在我在页面加载上使用一个动态操作来运行一些PLSQL。我将对象中的每个值附加到plsql块中的varchar2变量,该变量由逗号分隔。然后,我将一个隐藏页面项设置为该变量的值,因此它包含如下值:

item1,item2,item3,item4,item5
然后通过javascript动态操作,我将项目值拆分为逗号,然后用自定义的html字符串替换选择列表的html,以将所有项目作为选项列出


这不是我理想的解决方案,所以我仍然想知道是否有更好的方法。或者,此解决方案的一部分可以用于更好的解决方案。

如果将过程修改为返回变量的函数,则可以创建动态顶点值列表对象,查询定义如下:

FOR i IN 1..vArray.COUNT LOOP
    :P1_SELECT_LIST.append(vArray(i));
END LOOP;
BEGIN
    return 'select column_value d, column_value r from table(testschema.getLOV())';
END;

您可以使用弹出式查询功能。请阅读此处

使用Tony建议的功能包装您的程序:

create 
function apx_getLOV
  return testschema.stringarray_type
as
  l_result testschema.stringarray_type;
begin
  testschema.getLOV(l_result);

  return l_result;
end apx_getLOV;
/
您在LOV source中的查询将是下一个:

select column_value d, column_value r from table(apx_getLOV())

您可以阅读有关表集合表达式的内容。

如何显示这些值?穿梭班机、公共汽车复选框?文本字段?我希望它们位于选择列表(html组合框)中