存储过程获取所有记录

时间:2019-06-26 23:26:48

标签: oracle stored-procedures

我想遍历所有记录并将它们连接成一个字符串。

代码如下:

nav()

1 个答案:

答案 0 :(得分:0)

取决于结果的长度,如果结果少于4000个字符,则更简单的选择是使用LISTAGG,例如

select listagg(m.trackid, ', ') within group (order by null) result
from multishipdtl m
where m.orderid = p_orderid;

此外,为什么它是程序功能似乎是一个更好的选择(您可以在SQL中使用它;带有OUT参数的过程需要一个(n个匿名)PL / SQL块,声明一个接受该变量的变量。结果)。例如:

create or replace function f_get_tracking_nos (p_orderid in number)
  return varchar2
is
  retval varchar2(4000);
begin
  select listagg(m.trackid, ', ') within group (order by null)
    into retval
    from multishipdtl m
    where m.orderid = p_orderid;

  return retval;
end;