您的位置:首页 > 数据库 > MySQL

数据库游标使用mysql(全表操作)

2014-12-11 14:02 330 查看
DELIMITER $

DROP PROCEDURE IF EXISTS reset_sync_status $

CREATE PROCEDURE reset_sync_status

(

IN p_db_name VARCHAR(30)

)

BEGIN

DECLARE sql_str VARCHAR(200);

DECLARE table_name VARCHAR(60);

DECLARE done INT DEFAULT FALSE;

DECLARE field_name VARCHAR(20) DEFAULT 'sync_status';

DECLARE def_value VARCHAR(10) DEFAULT '0';

DECLARE cur CURSOR FOR

SELECT a.table_name

FROM information_schema.TABLES a INNER JOIN information_schema.COLUMNS b ON a.table_name = b.table_name

WHERE a.table_schema = p_db_name AND b.column_name = field_name;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cur;

read_loop:LOOP

FETCH cur INTO table_name;

SET @sql_str = CONCAT('UPDATE ',table_name,' set ',field_name,'=',def_value,';');

PREPARE stmt FROM @sql_str;

EXECUTE stmt;

IF done THEN

LEAVE read_loop;

END IF;

END LOOP;

CLOSE cur;

END $

CALL reset_sync_status('chm_baseinfo') $

DROP PROCEDURE reset_sync_status $

DELIMITER ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: