В зависимости от длины результата и если он короче 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;