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

Multiples UPDATES en Store Procedure Mysql 5.0.18

Estas en el tema de Multiples UPDATES en Store Procedure Mysql 5.0.18 en el foro de Mysql en Foros del Web. Estimados Amigos: Tengo un procedimiento almacenado que debe actualizar una tabla dependiendo de los resultados que arroja un Cursor . Hasta ahora he conseguido que ...
  #1 (permalink)  
Antiguo 04/08/2006, 09:28
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Multiples UPDATES en Store Procedure Mysql 5.0.18

Estimados Amigos:

Tengo un procedimiento almacenado que debe actualizar una tabla dependiendo de los resultados que arroja un Cursor.

Hasta ahora he conseguido que el cursor se ejecute sin problema, ahora cuando obtengo el campo del cursos que necesito para hacerle el UPDATE a la otra tabla, este no hace caso a la clausula WHERE de la sentencia que realiza el update.

Hasta el momento es extraño, por que el script actualiza todos los campos ó no actualiza nada.

Para poder ver realmente lo que el procedimiento estaba realizando, cree una tabla para almacenar y ver el output de la sentencia UPDATE dentro del Store procedure, y los resultados son los que yo esperaba que hiciera el procedimiento.

Tal vez sea algun problema de rendimiento, ya que el procedimiento deberia de realizar más de 16 UPDATES, pero me parece absurdo ya que en teoria para eso son los procedimientos almacenados

----------------- AQUI LES DEJO EL PROCEDIMIENTO ALMACENADO

CREATE PROCEDURE `grp_deny_access`(IN GRP INTEGER(11), IN MODULE INTEGER(11))
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE done, ID INT DEFAULT 0;
DECLARE MODULOS CURSOR FOR SELECT node.id
FROM dk_modules_admin AS node, dk_modules_admin AS parent
WHERE parent.id =
MODULE AND node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.lft ORDER BY node.lft;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN MODULOS;

REPEAT
FETCH MODULOS INTO ID;
IF NOT done THEN
INSERT INTO test_cursor (modulo) VALUES (CONCAT('UPDATE dk_grp_access_admin SET stat = 1 WHERE module =', ID, ' AND grp =',GRP));
UPDATE dk_grp_access_admin SET stat = 0 WHERE grp = GRP AND module = ID;
END IF;
UNTIL done END REPEAT;

CLOSE MODULOS;
END;


Si alguien me podria orientar, le estaré agradecido por un buen tiempo

Gracias...
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
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 05:27.