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

Ayuda en cursor con mysql

Estas en el tema de Ayuda en cursor con mysql en el foro de Mysql en Foros del Web. BUENAS ALGUIEN SABE COMO HACER UN BREAK EN MYSQL, LO QUE QUIERO ES HACER UN BREAK CUANDO EL INCREMENTO SEA 2 DELIMITER $$ DROP PROCEDURE ...
  #1 (permalink)  
Antiguo 08/12/2008, 09:33
 
Fecha de Ingreso: noviembre-2008
Ubicación: Lima
Mensajes: 48
Antigüedad: 15 años, 5 meses
Puntos: 2
Ayuda en cursor con mysql

BUENAS ALGUIEN SABE COMO HACER UN BREAK EN MYSQL, LO QUE QUIERO ES HACER UN BREAK CUANDO EL INCREMENTO SEA 2
DELIMITER $$

DROP PROCEDURE IF EXISTS `digianet`.`USP_PAGOCLIENTE_Lista` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `USP_PAGOCLIENTE_Lista`()
begin
DECLARE done INT DEFAULT 0;
DECLARE c_cod_cliente bigint;
DECLARE c_nom_cliente varchar(80);
DECLARE c_tel_cliente varchar(8);
DECLARE c_dir_cliente varchar(80);
DECLARE c_dia_gracia int;
DECLARE fecha_actual datetime;
DECLARE c_fe_ven datetime;
DECLARE incremento int default 0;
DECLARE cur1 CURSOR FOR SELECT c.cod_cliente,nom_cliente,tel_cliente,dir_cliente, dia_gracia,fe_ven
from cliente c inner join pago_cliente pc on pc.cod_cliente=c.cod_cliente where estado_cliente=1 and pc.estado=0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
set fecha_actual=(select now());
OPEN cur1;

REPEAT
FETCH cur1 INTO c_cod_cliente,c_nom_cliente,c_tel_cliente,c_dir_cl iente,c_dia_gracia,c_fe_ven;
IF NOT done THEN
set incremento=0;
while c_fe_ven<fecha_actual do
set c_fe_ven=(select adddate(c_fe_ven, INTERVAL 30 DAY));
select c_fe_ven;
set incremento=incremento+1;
if incremento>1 then
SELECT 'ALGO';//ACA EL BREAK
END IF;
end while;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;

end $$

DELIMITER ;
  #2 (permalink)  
Antiguo 08/12/2008, 17:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ayuda en cursor con mysql

Debes definir el WHILEcon etiqueta para poder hacer que lo abandone:
Código sql:
Ver original
  1. ciclo: WHILE c_fe_ven<fecha_actual DO
  2.   SET c_fe_ven= (ADDDATE(c_fe_ven, INTERVAL 30 DAY)) ; /* <-- el SELECTes innecesario cuando se hace una operación SET dentro de un SP*/
  3.  
  4.   -- select c_fe_ven; <-- Esta linea no tiene sentido
  5.  
  6.   SET incremento = incremento+1;
  7.   IF incremento>1 THEN
  8.       LEAVE ciclo;
  9.   END IF;
  10. END WHILE ciclo;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/12/2008, 18:45
 
Fecha de Ingreso: noviembre-2008
Ubicación: Lima
Mensajes: 48
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Ayuda en cursor con mysql

gracias man por tu respuesta
  #4 (permalink)  
Antiguo 20/04/2010, 21:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ayuda en cursor con mysql

Acabo de postear el uso de procedures y cursores en mysql 5.0 en mi blog http://periospino.blogspot.com/2010/04/procedures-y-cursores-en-mysql.html ... espero les sirva.. saludos
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 09:46.