Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/06/2008, 09:34
OscarH
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Parámetros de un procemiento: admite variables de un cursor?

QUE TAL,

PUES COMO MENCIONA MATANGA ES ALGO MUY COMÚN. A ESTO SE LE LLAMA REF_CURSORS. TE DEJO UN EJEMPLO DE COMO APLICARLOS.



CREATE OR REPLACE PACKAGE NOMBRE_PAQUETE IS

TYPE NOMBRE_REFCURSOR IS REF CURSOR; -- DECLARAS EL TIPO DE REF CURSOR

PROCEDURE proc_ori;
PROCEDURE proc_des (pValores IN NOMBRE_REFCURSOR);

END NOMBRE_PAQUETE;
/

CREATE OR REPLACE PACKAGE BODY NOMBRE_PAQUETE IS

--===========================================
-- PROCEDIMIENTO DONDE ARMAS TUS PARÁMETROS
--===========================================

PROCEDURE proc_ori IS
vrParam NOMBRE_REFCURSOR;
BEGIN

-- TU CÓDIGO

-- ABRIR EL REF CURSOR CON EL QUERY QUE CONTENGA TUS PARÁMETROS
OPEN vrParam FOR
SELECT 'PEPITO' NOMBRE, 'ALTO' ATR1, 'GUAPO' ATR2
FROM DUAL;

proc_des (vrParam);

EXCEPTION
WHEN OTHERS THEN
-- TUS EXECPCIONES
END proc_ori;


--===========================================
-- PROCEDIMIENTO DONDE RECIBES LOS PARÁMETROS
--===========================================
PROCEDURE proc_des(pValores IN NOMBRE_REFCURSOR) IS
vvNombre VARCHAR2(50);
vvAtr1 VARCHAR2(50);
vvAtr2 VARCHAR2(50);
BEGIN


-- OBTENER LOS PARÁMETROS DEL REF CURSOR
LOOP
FETCH pValores INTO vvNombre, vvAtr1, vvAtr2;
EXIT WHEN pValores%NOTFOUND;
END LOOP;

-- TU CÓDIGO DONDE USARÁS LOS PARÁMETROS.


EXCEPTION
WHEN OTHERS THEN
-- TUS EXECPCIONES
END proc_des;



END NOMBRE_PAQUETE;
/

ESPERO TE SEA DE UTILIDAD.