仅循环遍历所有行 returns 最后一行
Looping through all the rows only returns the last one
我正在尝试使用此 Plsql return 将一个值添加到 Apex 页面项目中。
页面项目源是 PL/SQL 函数体。
DECLARE
v_val VARCHAR2 (3000 CHAR);
CURSOR c_mylist
IS
select * from table_mylist
order by id;
BEGIN
FOR r_mylist IN c_mylist
LOOP
--dbms_output.put_line( c_mylist.item );
v_val := c_mylist.item ||' '||c_mylist.item;
END LOOP;
return v_val;
END;
出乎意料的是它只 return 将游标的最后一个值放入页面项目而不是所有行值。
在 SQL 开发人员中尝试使用 dbms_output.put_line 显示正确的结果。
我的脚本出了什么问题?
应该是
v_val := v_val ||' '||c_mylist.item;
而不是
v_val := c_mylist.item ||' '||c_mylist.item;
不过,您可以使用单个 select
语句代替整个 PL/SQL 代码:
declare
v_val varchar2(3000);
begin
select listagg(item, ' ') within group (order by id)
into v_val
from table_mylist;
return v_val;
end;
我正在尝试使用此 Plsql return 将一个值添加到 Apex 页面项目中。 页面项目源是 PL/SQL 函数体。
DECLARE
v_val VARCHAR2 (3000 CHAR);
CURSOR c_mylist
IS
select * from table_mylist
order by id;
BEGIN
FOR r_mylist IN c_mylist
LOOP
--dbms_output.put_line( c_mylist.item );
v_val := c_mylist.item ||' '||c_mylist.item;
END LOOP;
return v_val;
END;
出乎意料的是它只 return 将游标的最后一个值放入页面项目而不是所有行值。 在 SQL 开发人员中尝试使用 dbms_output.put_line 显示正确的结果。 我的脚本出了什么问题?
应该是
v_val := v_val ||' '||c_mylist.item;
而不是
v_val := c_mylist.item ||' '||c_mylist.item;
不过,您可以使用单个 select
语句代替整个 PL/SQL 代码:
declare
v_val varchar2(3000);
begin
select listagg(item, ' ') within group (order by id)
into v_val
from table_mylist;
return v_val;
end;