Código:
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 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 ;
poder colocar el resultado en lugar de 'valor' en esta sentencia
Código:
Alguna idea? alguien me puede dar una mano?SET @qry3 = CONCAT('UPDATE ', tabla, ' set ', atributo, ' = ',valor,' where id = ', identificador, ';');
gracias de antemano...