Ir al contenido principal

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

Los Espacios de Tablas o Tablespaces permiten agrupar lógicamente los datafiles o archivos de datos donde se almacenan físicamente los datos de las tablas de usuarios y del sistema. Oracle en todas sus ediciones cuenta por defecto con 5 tablespaces: SYS SYSTEM UNDO TEMP USERS Cada espacio de tabla tiene una función definida que se muestra en la tabla siguiente: TABLESPACE DESCRIPCIÓN SYSTEM Almacena información acerca de los datos de la base de datos. SYSAUX "Es un tablespace que nace en 9i para dar soporte a los diferentes features de Oracle que necesitan crear segmentos dentro de la base de datos, por ejemplo AWR en 10g."  http://www.forosdelweb.com/f100/tablespace-sysaux-606358/ UNDO Sirve para retener los cambios que se realizan sobre los datos en Oracle y así poder deshacerlos. TEMP Contiene datos temporales o no permanentes  que permanecen únicamente por la duración de la sesión, es decir, que una vez que la sesión termina, estos datos son bo

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

Oracle Database XE puede ser accedida desde la aplicación SQL*Plus, que es un programa de líneas de comandos SQL. Para acceder a SQL*PLus, existen dos métodos: Primero: Inicio>Todos los programas>Base de datos Oracle 10g/11g  Express Edition>Ejecutar Línea de comandos SQL.                     En el caso de Oracle Database 18c Express Edition para Windows:  Inicio>Oracle-OraDB18Home1>SQLPlus Se visualiza la ventan de SQLPlus y se activa un promptuario SQL> que antecede a cualquier comando SQL. Para establecer la conexión al servidor Oracle, ingrese el comando: SQL> conn system (presione ENTER) Introduzca la contraseña: La contraseña es la establecida por Usted al momento de instalar Oracle.(A no ser que la haya cambiado). Presione Enter. Se visualizará el mensaje: Conectado .   A continuación se activa el prompter SQL> Ahora podemos enviar mandatos SQL al servidor XE. Para empezar, crearemos un nuevo usuario llamado MUSICAL. La

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

Es habitual crear y administrar usuarios y roles por medio de líneas de comando usando SQL PLUS, sin embargo muchos de estos procesos pueden  realizarse por medio de Oracle SQL Developer que es la herramienta gráfica desarrollada en Java para cubrir de modo visual las tareas mencionadas. Crear un usuario con Oracle SQL Developer 1.   Iniciar  Oracle SQL Developer 2. Abrir la conexión de usuario SYSTEM configurada para XEPDB1 o cualquier otra PDB disponible. Si no cuenta con una conexión basada en el usuario SYSTEM, ver el siguiente post . 3.   En el panel Conexión se desplegarán los nodos de la conexión abierta y seleccionar la carpeta Usuarios.   4.   Click con botón secundario y seleccionar Crear Usuario . 5.   Llenar los datos en el formulario Crear Usuario. 6.   Click en Roles Otorgados. Seleccionar CONNECT y RESOURCE .   7.   Seleccionar Cuotas. Seleccionar USERS y establecer 300 en la columna Cuota y M en Unidades. Opcional.- Click en S