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

Cursores

Estas en el tema de Cursores en el foro de Mysql en Foros del Web. Hola como estan ?? Bueno resulta que estoy usando este procedimiento para acceder a los registros de una tabla,,, el tema es que es un ...
  #1 (permalink)  
Antiguo 11/02/2009, 11:19
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 5 meses
Puntos: 0
Cursores

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
  #2 (permalink)  
Antiguo 11/02/2009, 15:07
 
Fecha de Ingreso: febrero-2009
Mensajes: 6
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Cursores

La linea que declara el estado del cursor, solo te indica el final de archivo del mismo, en cuanto avanzas un nuevo registro y lo lees (fetch) el verifica el "sqlstate" del cursor, al llegar al final "done" se hace igual a 1.
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 21:52.