Sv Community El Salvador
Soporte y Tecnología => Programación => Base de Datos => Mensaje iniciado por: jose_lemus94 en octubre 07, 2016, 04:24:43 pm
-
:sos: :sos:<img src="https://yb8hiq.dm
Hola a todos, este es mi primer post que hago con una inquietud, fijense que quiero hacer un Procedimiento almacenado en XAMPP (MariaDB), pero me da error el FETCH, no sé porqué, tengo que limpiar las variables cuando hago un loop, while o repeat???
Lo que quiero hacer es un procedimiento que me permita hacer una especie de back up de una tabla (auditoria) de base de datos (northwind) a otra tabla (aubk) de otra base de datos (moviendo), he tratado de muchas maneras y no puedo hacer que el procedimiento se guarde, el problema según MariaDB es que el FETCH es el problema, pero lo reviso y "al parecer: todo está bien", necesito una manita por favor, porque la tarea era para ayer, pero le escribí al ingeniero que me de chance ahora de enviarla y me he dado duro todo el día en eso, corregí muchos errores y en teoria sólo esa es la traba.
(https://yb8hiq.dm2304.livefilestore.com/y3mWE2LhfZV5fHtDMq7ilGIdAbr3zA-yH-ZPKCyINiagwGX0URdaaiWPYhQKS9-Cnk2U29cVaRIZ0YiMQk4mdfGN-A9eAAJRnn7YvKdDzziC2iVng44LrWJ7horrnv8HLYo2232MUn-ywWJ3eOZauKcFPiuw48kkHonLGcCfwYU9Zc?width=1920&height=1080&cropmode=none)
Estoy ocupando XAMPP, como base de datos MariaDB.
Este es el codigo:
DELIMITER //
CREATE PROCEDURE moviendo()
BEGIN
DECLARE codEmp INT;
DECLARE fecha TIMESTAMP;
DECLARE ipv4 VARCHAR(15);
DECLARE comentario VARCHAR(100);
DECLARE bolsa CURSOR FOR SELECT codEmp, fecha, ipv4, comentario FROM `auditoria`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @hecho = TRUE
OPEN bolsa;
REPEAT
FETCH bolsa INTO codEmp,fecha,ipv4,comentario;
IF comentario IS NULL THEN
INSERT INTO `moviendo.aubk` VALUES (codEmp,fecha,ipv4,'NO HAY JUSTIFICACION DE MOVIMIENTO');
ELSE
INSERT INTO `moviendo.aubk` VALUES (codEmp,fecha,ipv4,comentario);
END IF;
UNTIL @hecho
END REPEAT;
CLOSE bolsa;
SELECT codEmp, fecha, ipv4, comentario from `moviendo.aubk`;
END;
//
Porfa se les agradecería que pudieran ayudarme. :sos: :sos: :sos: :sos: :sos: :sos: :sos: :sos: :sos: :sos: :sos:
-
y el error cuál es?
-
Hola tekun, mirá seguí probando el finde, y verifiqué si podía enviar desde una base de datos a otra, hice un insert, desde otra BD y se hizo:
Este es mi procedimiento que quiero crear (bueno ya cree, pero no me funciona):
BEGIN
DECLARE codEmp INT(11);
DECLARE fecha TIMESTAMP;
DECLARE ipv4 VARCHAR(15);
DECLARE comentario VARCHAR(100);
DECLARE bolsa CURSOR FOR SELECT codEmp, fecha, ipv4, comentario FROM `auditoria`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @hecho = TRUE;
OPEN bolsa;
WHILE @hecho=FALSE DO
FETCH bolsa INTO codEmp,fecha,ipv4,comentario;
IF ipv4='123.456.789.101' THEN
INSERT INTO moviendo.aubk VALUES (codEmp,fecha,ipv4,'ESTE ES EL JEFE');
ELSE
INSERT INTO moviendo.aubk VALUES (codEmp,fecha,ipv4,'SON SUBORDINADOS');
END IF;
END WHILE;
CLOSE bolsa;
SELECT codEmp, fecha, ipv4, comentario from moviendo.aubk;
END
Lo que quiero que haga el procedimiento es que evalúe el campo ipv4, y, si la ip es una en específica que diga 'ESTE ES EL JEFE' y sino, 'SON SUBORDINADOS' y que los inserte en otra base de datos, pero siempre del mismo servidor y por último que me los muestre.
Pero me devuelve un error, (disculpen mi ignorancia por desconocerlo)
(https://zb8hiq.dm2304.livefilestore.com/y3me2m-A3wvWghMnEcgvq-u7GnQ2dzgi2uw8Xf0EtCqDKE2xWGIgGurQANpqw-753GgBQG30NRxTcW4XLKoN2_RdfYJpTGooK0OuD6CfVrEbAd0WUbJ6h2-h415w9zeuo8o5o39kBioWnah_xNakRDdquTEYlJS9SZttt5ZhbopoMQ?width=481&height=244&cropmode=none)
:sos: :sos: :sos:
-
Si solo queres mover de una tabla a otro, con esto bastaria:
BEGIN
INSERT INTO `moviendo.aubk` SELECT codEmp,fecha,ipv4,IF(ipv4 = '123.456.789.101', 'ESTE ES EL JEFE', 'SON SUBORDINADOS') from auditoria;
END
Te lo guardaria en tu tabla `moviendo.aubk`
codEmp fecha ipv4 Comentario
1 2015-01-09 127.0.0.1 SON SUBORDINADOS
2 2015-01-09 127.0.0.1 SON SUBORDINADOS
3 2015-01-09 123.456.789.101 ESTE ES EL JEFE
*Creado en MySQL