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

Desplazar Cursores

Estas en el tema de Desplazar Cursores en el foro de Oracle en Foros del Web. Buenas Tardes Comunidad: bueno lo que nesesito es lo siguiente tengo los siguientes Cursores create or replace function FN_EJM1(Cur_OUT OUT Sys_RefCursor, a In Number, b ...
  #1 (permalink)  
Antiguo 20/01/2010, 17:17
Avatar de ah_puch  
Fecha de Ingreso: agosto-2005
Ubicación: Ecatepec, México
Mensajes: 180
Antigüedad: 18 años, 7 meses
Puntos: 3
Exclamación Desplazar Cursores

Buenas Tardes Comunidad:

bueno lo que nesesito es lo siguiente tengo los siguientes Cursores

create or replace function FN_EJM1(Cur_OUT OUT Sys_RefCursor, a In Number, b In Number) IS
BEGIN

CURSOR CUR1 IS SELECT * FROM XXXX;
CURSOR CUR2 IS SELECT * FROM YYYYY;

FOR RUN1 IN CUR1 LOOP
FOR RUN2 IN CUR2 LOOP
IF RUN1.CAMPO1 = RUN2.CAMPO1 THEN
CUR_OUT := RUN1 + RUN2 -- AQUI ES DONDE NO SE COMO HACER PARA QUE LA COMBINACION DE AMBOS REGISTROS GENEREN 1 NUEVO EN EL CURSOR DE SALIDA
END IF;
END LOOP;
END LOOP;

END;

LO QUE NESESITO ES QUE LA UNION DEL CURSOR Y + EL CURSOR 2 SE VACIEN EN EL CURSOR 3 ES ESTO POSIBLE Y DE SERLO ME PODRIAN DAR ALGUNA REFERENCIA POR FAVOR.

de antemano gracias y espero me puedan auxiliar
__________________
La programacion no es un trabajo, es un Arte
http://www.purodev.blogspot.com
  #2 (permalink)  
Antiguo 27/01/2010, 13:32
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años
Puntos: 6
Respuesta: Desplazar Cursores

Necesitas declarar un type asi:

TYPE tnumbers IS TABLE OF NUMBER
INDEX BY BINARY_INTEGER;


En este tipo tabla vas a guardar como si fuera un arreglo tus operaciones que hagan match.

Yo declaro el tipo tabla en un paquete, quedaria de tu parte ver como lo usas en tu funcion o como logras declararlo.


Código:
create or replace function FN_EJM1(Cur_OUT OUT tnumbers, a In Number, b In Number) IS

C NUMBER;

BEGIN

CURSOR CUR1 IS SELECT * FROM XXXX;
CURSOR CUR2 IS SELECT * FROM YYYYY;

FOR RUN1 IN CUR1 LOOP
FOR RUN2 IN CUR2 LOOP
IF RUN1.CAMPO1 = RUN2.CAMPO1 THEN
CUR_OUT(C) := RUN1 + RUN2 -- AQUI ES DONDE NO SE COMO HACER PARA QUE LA COMBINACION DE AMBOS REGISTROS GENEREN 1 NUEVO EN EL CURSOR DE 
SALIDA

C=C+1;

END IF;
END LOOP;
END LOOP;

END;
Deben existir otras soluciones, se me ocurre esto ahorita...

Saludos.

Etiquetas: desplazar
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 17:05.