Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Parámetros de un procemiento: admite variables de un cursor?

Estas en el tema de Parámetros de un procemiento: admite variables de un cursor? en el foro de Oracle en Foros del Web. Buenas a todos. Perdonad mi ignorancia: Resulta que tengo un procedimiento,A, en el cuál se invoca a otro procedimiento,B, que se encuentra dentro de un ...
  #1 (permalink)  
Antiguo 30/06/2008, 07:53
 
Fecha de Ingreso: junio-2008
Mensajes: 9
Antigüedad: 15 años, 10 meses
Puntos: 0
Parámetros de un procemiento: admite variables de un cursor?

Buenas a todos.
Perdonad mi ignorancia:
Resulta que tengo un procedimiento,A, en el cuál se invoca a otro procedimiento,B, que se encuentra dentro de un paquete y que precisa de tres parámetros.
En este procedimiento A, se pasa como parámetros para el proc.B tres valores, "PEPITO","ALTO","GUAPO". Mi duda es si, en vez de tres valores concretos, a dicho procedmiento B, se le pueden pasar las variables de un cursos que estén previamente definidas, para que entre en el procimiento B y lo ejecute tantas veces como registros haya.
Gracias
  #2 (permalink)  
Antiguo 30/06/2008, 08:41
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Parámetros de un procemiento: admite variables de un cursor?

Hola,

Si, no hay problemas en hacer eso, de hecho, es una practica muy comun.

Saludos
  #3 (permalink)  
Antiguo 30/06/2008, 09:34
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 15 años, 10 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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:11.