
11/10/2011, 15:24
|
| | Fecha de Ingreso: octubre-2010
Mensajes: 18
Antigüedad: 14 años, 5 meses Puntos: 0 | |
Orientacion con Stored Procedure Saludos, tengo un pequeño problema con un stored procedure, vale la pena destacar que este es mi primer SP en mySql...
Código:
DELIMITER $$
DROP PROCEDURE IF EXISTS `registrarOperacion` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `registrarOperacion`(tabla varchar(255), atributo varchar(255), identificador int, valor double)
BEGIN
declare padre int;
declare valor2 double;
declare suma double;
SET @PADRE = NULL;
SET @IDENTIFICADOR = NULL;
SET @VALORTOTAL = NULL;
SET @SUMA = NULL;
SET @VALOR2 = NULL;
set @sumatotal = NULL;
SET @qry1 = CONCAT('SELECT parent_id from ', tabla, ' WHERE id =', identificador,' into @padre;');
SET @qry2 = CONCAT('SELECT ', atributo, ' from ', tabla, ' where id=@padre into @VALOR2;');
SET @qry3 = CONCAT('UPDATE ', tabla, ' set ', atributo, ' = ',valor,' where id = ', identificador, ';');
PREPARE stmt1 FROM @qry1;
PREPARE stmt2 FROM @qry2;
PREPARE stmt3 FROM @qry3;
EXECUTE stmt1;
EXECUTE stmt2;
EXECUTE stmt3;
if @padre <> 0 then
SET @qry4 = CONCAT('SELECT sum(', atributo, ') from ', tabla, ' where parent_id=@padre into @SUMA;');
SET @qry5 = CONCAT('UPDATE (', tabla, ') set ', atributo, '=@SUMA WHERE ID=@padre');
PREPARE stmt4 FROM @qry4;
PREPARE stmt5 FROM @qry5;
EXECUTE stmt4;
EXECUTE stmt5;
SET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255;
call registrarOperacion(tabla,atributo,@PADRE,@SUMA);
end if;
END $$
DELIMITER ;
Necesito que en lugar de 'valor' (uno de los parametros que inserto) pueda sumar el valor del parametro insertado con el valor de @VALOR2 y a su vez
poder colocar el resultado en lugar de 'valor' en esta sentencia
Código:
SET @qry3 = CONCAT('UPDATE ', tabla, ' set ', atributo, ' = ',valor,' where id = ', identificador, ';');
Alguna idea? alguien me puede dar una mano?
gracias de antemano... |