Problemas con un cursor
Tengo un cursor que lo abro, pero si entra en un IF lo debo cerrar y abrirlo con nueva informacion.
El problema es que al abrirlo me pide que ponga un begin y antes de cerrar el IF me pide que cierre el begin, y no me permite seguir con el ciclo que tendria que seguir el cursor.
EJ:
Anteriormente de esta sentencia el cursor esta abierto y utilizo un Loop para hacer el ciclo hasta que finalice
If oTOTAL < oACUM THEN COMMIT;
CLOSE Clientes_Cursor;
DECLARE CURSOR Clientes_Cursor IS Select IdentificacionId, IdentificacionNumero From CML_Relaciones_Clientes Group by IdentificacionId, IdentificacionNumero;
IRECCURSOR1 Clientes_Cursor%ROWTYPE;
BEGIN
OPEN Clientes_Cursor;
Select count(*) INTO oACUM From CML_Relaciones_Clientes;
COMMIT;
END;
END IF ;
END IF;
end LOOP;
Otra pregunta se pueden agregar datos nuevos al cursor ya abierto.
El problema es que al abrirlo me pide que ponga un begin y antes de cerrar el IF me pide que cierre el begin, y no me permite seguir con el ciclo que tendria que seguir el cursor.
EJ:
Anteriormente de esta sentencia el cursor esta abierto y utilizo un Loop para hacer el ciclo hasta que finalice
If oTOTAL < oACUM THEN COMMIT;
CLOSE Clientes_Cursor;
DECLARE CURSOR Clientes_Cursor IS Select IdentificacionId, IdentificacionNumero From CML_Relaciones_Clientes Group by IdentificacionId, IdentificacionNumero;
IRECCURSOR1 Clientes_Cursor%ROWTYPE;
BEGIN
OPEN Clientes_Cursor;
Select count(*) INTO oACUM From CML_Relaciones_Clientes;
COMMIT;
END;
END IF ;
END IF;
end LOOP;
Otra pregunta se pueden agregar datos nuevos al cursor ya abierto.
¡Hola!
No entiendo muy bien la lógica de tu código pero si el problema que te da es por la visibilidad entre diferentes bloques. No declares el cursor en un bloque secundario, hazlo en el DECLARE del bloque principal y no utilices el bloque secundario para declarlo.
Respecto a la segunda pregunta no se pueden agregar datos a un cursor pero si a una tabla pl de memoria con la misma estructura que el cursor (columnas que devuelve el mismo) y donde previamente se ha volcado la información que devuelve el mismo.
Saludos!!
No entiendo muy bien la lógica de tu código pero si el problema que te da es por la visibilidad entre diferentes bloques. No declares el cursor en un bloque secundario, hazlo en el DECLARE del bloque principal y no utilices el bloque secundario para declarlo.
Respecto a la segunda pregunta no se pueden agregar datos a un cursor pero si a una tabla pl de memoria con la misma estructura que el cursor (columnas que devuelve el mismo) y donde previamente se ha volcado la información que devuelve el mismo.
Saludos!!
