MySQL Forums
Forum List  »  Spanish

Cursores dentro de procedimiento almacenado
Posted by: Gomez Alvarez
Date: November 08, 2013 08:00AM

Hola,
estoy usando cursores en un procedimiento almacenado y me ha surjido la siguiente duda: ¿Es posible usar un cursor dentro de un cursor? Es decir:
- Por cada registro que me devuelve un cursor (cursor1)
* abrir otro cursor (cursor 2)
* realizar las operaciones oportunas con los registros que me devuelve ese curso 2
* cerrar cursor (cursor2)

Más o menos así:

DECLARE cursor1 CURSOR FOR SELECT DISTINCT(campo1) FROM tabla1;
DECLARE cursor2 CURSOR FOR SELECT campo2,campo3 FROM tabla1 where campo1=v_campo1;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET no_hay_mas_registros = 1;

OPEN cursor1;
REPEAT
FETCH cursor1 INTO v_campo1;
IF NOT no_hay_mas_registros THEN
OPEN cursor2;
REPEAT
FETCH cursor2 INTO v_campo2,v_campo3;
IF NOT no_hay_mas_registros THEN
<operaciones varias>
END IF;
UNTIL no_hay_mas_registros END REPEAT;
CLOSE cursor2;
END IF;

UNTIL no_hay_mas_registros END REPEAT;

CLOSE cursor1;

...he intentado hacer esto y no ha habido forma...los ejemplos que he visto, sí abren dos cursores pero operan independientemente...

Así que al final estoy pensando en crear un precedimiento que abra un cursor, y por cada registro que me devuelve ese cursor llamar a otro procedimimiento que me abre el otro cursor, y realizar las operaciones oportunas.

¿Es una barbaridad? ¿Existe una forma de usar un cursor dentro de un cursor?

Gracias.

Options: ReplyQuote


Subject
Views
Written By
Posted
Cursores dentro de procedimiento almacenado
7674
November 08, 2013 08:00AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.