仅循环遍历所有行 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;