mysql存储过程游标循环装载字符串SQL语句示例
之前一直在写T-SQL,没有写过mysql 的存储过程,今天用SQLYog写mysql的存储过程,感觉好不习惯...
没有过多研究
貌似变量声明前 不能执行select 之类的操作
写的一个示例,循环给表中某列增加一个默认值
自定义错误参照 这个
存储过程传参
Loop循环
游标存储
仅此标记..
后面有机会再研究吧....
DROP PROCEDURE IF EXISTS temp; DELIMITER // CREATE PROCEDURE temp( IN xx INTEGER) BEGIN DECLARE done INT DEFAULT FALSE; DECLARE tableName VARCHAR(50); DECLARE duplicate_key INT DEFAULT 0; DECLARE t_index CURSOR FOR (SELECT table_name FROM `information_schema`.`tables` WHERE table_schema='superpark'); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; SELECT xx; OPEN t_index; myLoop:LOOP FETCH t_index INTO tableName; IF done THEN LEAVE myLoop; END IF; BEGIN DECLARE EXIT HANDLER FOR 1054 SET duplicate_key=1; -- 这里的错误码根据具体错误码进行捕捉 SET @Sql = CONCAT("ALTER TABLE ",tableName," ALTER COLUMN is_deleted SET DEFAULT 0;"); PREPARE stmt FROM @Sql; -- execute stmt; END; IF duplicate_key=1 THEN SELECT CONCAT(tableName,'不存在列'); -- continue END IF; END LOOP myLoop; CLOSE t_index; END // DELIMITER ; CALL temp(254)
不存在列 1054