我有一个选择列表项,其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
由于
答案 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;