MySQL - Cursor para dos campos distintos.

 
Vista:

Cursor para dos campos distintos.

Publicado por alberto (9 intervenciones) el 27/11/2010 19:02:02
Hola amigos tengo un problema con un cursor puedo recorrer un tabla , pero quisiera recorrer y poder obtener los demas valores de la tabla a la que me estoy haciendo referencia , nose si debo usar dos cursores??. com mi ejemplo o solo con uno??

en mi ejemplo quiero sacar dos valores dentro de rpta_1 y rpta_2

graicas

DELIMITER $$

DROP FUNCTION IF EXISTS `busca_error` $$
CREATE DEFINER=`root`@`localhost` FUNCTION `busca_error`() RETURNS int(11)
BEGIN

declare i INT DEFAULT 0;
declare rpta_id INT;
declare rpta_valor char(40);
declare finished INTEGER DEFAULT 0;
declare cur_name_1 CURSOR FOR SELECT p.id FROM productos p;
declare cur_name_2 CURSOR FOR SELECT p.Valor FROM productos p;

declare CONTINUE HANDLER FOR NOT FOUND SET finished = 1;


open cur_name_1;
fun: LOOP
FETCH cur_name_1 INTO rpta_1;
FETCH cur_name_2 INTO rpta_2;
IF finished THEN
LEAVE fun;
END IF;

insert into resultados (id,valor) values (rpta_1,rpta_2);


END LOOP fun;
CLOSE cur_name;

return id;
END $$

DELIMITER ;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Me respndo yo solo.

Publicado por alberto (9 intervenciones) el 27/11/2010 19:11:04
chicos encontre mi solucion

simplemente en el cursor agregrar el siguiente campo y ya essta ademas tambien en FEtch cur_name INTO id,valor;

DELIMITER $$

DROP FUNCTION IF EXISTS `busca_error` $$
CREATE DEFINER=`root`@`localhost` FUNCTION `busca_error`() RETURNS int(11)
BEGIN

declare i INT DEFAULT 0;
declare id INT;
declare valor char(20);
declare finished INTEGER DEFAULT 0;
declare cur_name CURSOR FOR SELECT p.id , p.Valor FROM productos p;

declare CONTINUE HANDLER FOR NOT FOUND SET finished = 1;


open cur_name;
fun: LOOP
FETCH cur_name INTO id,valor;
IF finished THEN
LEAVE fun;
END IF;

insert into resultados (id,valor) values (id,valor);


END LOOP fun;
CLOSE cur_name;

return id;
END $$

DELIMITER ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Me respndo yo solo.

Publicado por GonzaloGC (339 intervenciones) el 28/11/2010 02:34:38
Menos mal que te diste cuenta que era una pregunta boluda... desde el momento en que un cursor es un puntero a una tabla resultado, todo lo que el select conteniga puede ser leido...

La proxima vez, por favor: RTFM!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar