Mysql存储过程动态拼接sql语句
刚接触存储过程,现在的需求是这样的:有⼀个表需要我更新其中的某些字段,但是表⾥⾯的字段太多了,⽽且下次再更新也不确定是哪些
字段要批量更新,所以就需要动态创建⼀个update语句来完成这个⼯作。
存储过程⽆疑是个好的选择,在mysql数据库中,所有表的字段保存在了information_schema.COLUMNS中,所以写如下存储过程解决
该问题。
DROP PROCEDURE IF EXISTS test.`wk`;
DELIMITER $$
CREATE
PROCEDURE `test`.`wk`()
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE c_name VARCHAR(50);
DECLARE done INT DEFAULT 0;
DECLARE update_sql VARCHAR(100) DEFAULT 'update test.tb_student set ';
DECLARE cur CURSOR FOR SELECT ifsc.COLUMN_NAME FROM information_schema.`COLUMNS` ifsc WHERE ifsc.TABLE_NAME = 'tb_student' AND ifsc.CO DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN cur;
my_loop:LOOP
FETCH cur INTO c_name;
IF done=1 THEN
LEAVE my_loop;
END IF;
SET @keyvalue=CONCAT(c_name,'=NULL');
IF i <> 0 THEN
SET @keyvalue=CONCAT(',',@keyvalue);
END IF;
SET update_sql=CONCAT(update_sql,@keyvalue);
SET i=i+1;
END LOOP my_loop;批量更新sql语句
CLOSE cur;
SELECT update_sql;
END$$
DELIMITER ;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论