顶点选​​择列表项应返回默认值

时间:2018-05-04 07:26:59

标签: oracle-apex oracle-apex-5 oracle-apex-5.1

我有一个选择列表项,其LOV为select name, name from dual,但我需要显示该项的一些默认值,默认的PL / SQL代码是

DECLARE
   l_workspace   VARCHAR2 (4000);
   l_email       VARCHAR2 (4000);
BEGIN
   SELECT WORKSPACES
     INTO l_workspace
     FROM ALLUSER_WORKSPACES_FACT
    WHERE LOWER (email) = LOWER ( :app_user);

   FOR i
      IN (SELECT COLUMN_VALUE col1
            FROM TABLE (f_str2tbl (LOWER (l_Workspace), ',')))
   LOOP
      l_email := i.col1;
      RETURN l_email;
   END LOOP;
END;

o / p就像:

a
b
c

选择列表值仅显示第一个值,因为未显示剩余数据。

PL / SQL代码有什么问题?我需要将选择列表中的所有输出都作为

a
b
c

由于

2 个答案:

答案 0 :(得分:0)

如果使用“允许多项选择”=“是”定义选择列表,则所选值将保留为冒号分隔列表,例如' A:B:C&#39 ;.所以你需要使你的默认值相同。 apex_string.join函数可以提供帮助 - 事实上他们的例子是:

apex_string.join(apex_t_varchar2('a','b','c'),':')
-> a:b:c

答案 1 :(得分:0)

声明

return l_email;

总是结束功能,所以它打破了循环。

对于这个LOV,您应该使用PL / SQL函数体返回SQL Query,其代码如

DECLARE
   l_workspace   VARCHAR2 (4000);
   l_email       VARCHAR2 (4000);
BEGIN
  SELECT WORKSPACES
     INTO l_workspace
     FROM ALLUSER_WORKSPACES_FACT
    WHERE LOWER (email) = LOWER ( :app_user);

   return 'SELECT COLUMN_VALUE col1
            FROM TABLE (f_str2tbl (LOWER (l_Workspace), '',''))';
END;