Aquí hay un paquete con dos funciones pipeline:función En tubería llamar a otra función pipeline
create or replace type tq84_line as table of varchar2(25);
/
create or replace package tq84_pipelined as
function more_rows return tq84_line pipelined;
function go return tq84_line pipelined;
end tq84_pipelined;
/
Ant el correspondiente cuerpo de embalaje:
create or replace package body tq84_pipelined as
function more_rows return tq84_line pipelined is
begin
pipe row('ist');
pipe row('Eugen,');
return;
end more_rows;
function go return tq84_line pipelined is
begin
pipe row('Mein');
pipe row('Name');
/* start */
for next in (
select column_value line from table(more_rows)
)
loop
pipe row(next.line);
end loop;
/* end */
pipe row('ich');
pipe row('weiss');
pipe row('von');
pipe row('nichts.');
end go;
end tq84_pipelined;
/
Lo importante es que van tipo de llamadas more_rows
con el for next in ...
entre /* start */
y /* end */
puedo usar el paquete de la siguiente manera:
select * from table(tq84_pipelined.go);
Esto es todo lo fino y elegante, pero esperaba que pudiera sustituir a las líneas entre /* start */
y /* end */
con una simple llamada de more_rows
.
Sin embargo, esto obviamente no es posible, ya que genera un PLS-00221: 'MORE_ROWS' no es un procedimiento o no está definido.
Entonces, mi pregunta: ¿realmente no hay forma de atajar el bucle?
EDITAR
Obviamente, a partir de las respuestas hasta el momento, mi pregunta no era clara.
El paquete, como se indica, funciona.
Pero me molestan las 6 (es decir: SEIS) líneas entre los marcadores /* start */
y /* end */
. Me gustaría reemplazar estos con una sola línea. Pero no he encontrado ninguna forma de hacerlo.
Gracias por su respuesta. Pero no ayuda mi 'problema' porque con este constructo no solo tengo el 'for ... loop ...la construcción del bucle final, pero también un 'almacenamiento masivo 'adicional. Quiero decir, no es TANTO un problema, ya que puedo vivir con él, pero pensé que sería visualmente más atractivo con una simple llamada de una línea a más filas sin más bucles y lo que no. –