Conjunto resultados desde procedimientos.
Para recuperar un conjunto resultado desde un procedimiento almacenado, se debe declarar un parámetro de entrada(In) y salida(Out) de tipo SYS_REFCURSOR.
Por ejemplo, conectémonos al esquema HR de nuestro servidor XE usando SQL*Plus:
create or replace procedure select_employees(p_nomina in out sys_refcursor)
is
begin
open p_nomina for
select last_name,first_name
from employees;
exception
when NO_DATA_FOUND then
raise_application_error(-20100,'Sin data.');
end;
/
procedimiento creado.
SQL> execute select_employees(:nomina);
Procedimiento PL/SQL terminado correctamente.
SQL> print :nomina;
LAST_NAME FIRST_NAME
------------------------- --------------------
Abel Ellen
Ande Sundar
Atkinson Mozhe
Austin David
Baer Hermann
Baida Shelli
Banda Amit
Bates Elizabeth
Bell Sarah
Bernstein David
Bissot Laura
107 filas seleccionadas.
La utilidad de estos procedimientos es enviar datos a aplicaciones desarrolladas en algún lenguaje de programación como: .NET, C/C++, Java, PHP.
Otra alternativa compatible con 11g y superiores.
Saludos.
Por ejemplo, conectémonos al esquema HR de nuestro servidor XE usando SQL*Plus:
create or replace procedure select_employees(p_nomina in out sys_refcursor)
is
begin
open p_nomina for
select last_name,first_name
from employees;
exception
when NO_DATA_FOUND then
raise_application_error(-20100,'Sin data.');
end;
/
procedimiento creado.
SQL> execute select_employees(:nomina);
Procedimiento PL/SQL terminado correctamente.
SQL> print :nomina;
LAST_NAME FIRST_NAME
------------------------- --------------------
Abel Ellen
Ande Sundar
Atkinson Mozhe
Austin David
Baer Hermann
Baida Shelli
Banda Amit
Bates Elizabeth
Bell Sarah
Bernstein David
Bissot Laura
107 filas seleccionadas.
La utilidad de estos procedimientos es enviar datos a aplicaciones desarrolladas en algún lenguaje de programación como: .NET, C/C++, Java, PHP.
Otra alternativa compatible con 11g y superiores.
Saludos.
Comentarios
SQL> variable nomina refcursor;
A continuación, ejecutas el procedimiento pasando como argumento de llamada la variable declarada anteponiendo los dos puntos.
SQL> execute select_employees(:nomina);
Procedimiento PL/SQL terminado correctamente.
Posteriormente, llamas al procedimiento PRINT pasándole como argumento nomina anteponiendo los dos puntos, pulsas enter y verás el unto resulSQL>tado:
print :nomina;
Roberto
Saludos.