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.

Comentarios

Anónimo dijo…
HOla, que bueno, que explicas como almacenar el resultado de un procedimiento, ya probé crear el procedimiento. pero me puedes explicar como se ejecuta el procedimiento en SQL>execute select_employees(:nomina);no entiendo, donde, como y en que momento se crea la variable nomina, tengo dudas, sobre la variable anonime. Me puedes explicar
Roberto PZ dijo…
Hola, gracias por tu comentario, después de haber creado el procedimiento almacenado, declaras una variable del tipo refcursor:
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.

Entradas más populares de este blog

Crear y Administrar Espacios de Tablas(Tablespaces) Parte 1

Como conectarse a Oracle Database XE desde la línea de comandos.

Crear usuarios, asignar y revocar roles en Oracle XE con SQL Developer