MySQL - Cursores

 
Vista:

Cursores

Publicado por Matias (1 intervención) el 11/02/2009 18:22:06
Hola como estan ??

Bueno resulta que estoy usando este procedimiento para acceder a los registros de una tabla,,, el tema es que es un ejemplo el cual adapte a mis necesidades y si bien funciona no entiendo del todo el código


Código:

CREATE DEFINER=`root`@`localhost` PROCEDURE `probar`(codprop int, sucup varchar(1), cantidadusar int, codventap int)
BEGIN
declare done int default 0;
declare cant int;
declare indi int;
declare precioc decimal(15,2);

declare cur cursor for select cantidad, indice, pre_com from mov_com where codpro = codprop
and sucursal = sucup order by indice;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
open cur;
repeat
fetch cur into cant, indi, precioc;
if not done then
if cantidadusar > cant then
set cantidadusar = cantidadusar - cant;
insert into productosmov(codpro, cantidad, sucursal) values (codprop, cant, 'm');
else
insert into productosmov(codpro, cantidad, sucursal) values (codprop, cant, 'n');
end if;
end if;
until done end repeat;
close cur;
END
por ejemplo esta linea no se bien que hace

Código:
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done =1;

tambien no entiendo si lo que hace es recorrer los registros haciendo un ciclo y si es asi suponiendo que quiero que salga antes de lo prievisto del mismo como lo hago. Es decir salir de el si se cumple una condicion sin esperar a que termine de recorrer todos los registros del ciclo.
Bueno mientras mas info mejor, yo estube leyendo pero no pude sacarme algunas dudas

Ah me olvidaba, tambien me gustaria saber como ir al ultimo registro de los seleccionados con select

gracias
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