mysql存储过程注释方法_mysql存储过程 详细注释
原文:https://my.oschina.net/u/3582142/blog/1581929
delimiter $$ /* 重新定義mysql結束符,而不再是分號是結束符 */
create procedure mergeDeclare() /* 創建存儲過程 */
BEGIN
/*定義局部變量*/
DECLARE id INT DEFAULT 0;
DECLARE Done INT DEFAULT 0;
DECLARE mobile VARCHAR(20);
DECLARE mobileTemp VARCHAR(20) DEFAULT '';
DECLARE maxId INT DEFAULT 0;
DECLARE t_error INTEGER DEFAULT 0;
DECLARE rs CURSOR FOR ?/* 定義從mysql取數據的游標 */
/* 查出需要的數據 */
select
a.declare_id,a.user_mobile
from
declare_info a,
(select user_mobile from declare_info b where b.status=1 group by user_mobile having count(1)>1) b
where
a.user_mobile=b.user_mobile and a.status =1 and CHARACTER_LENGTH(a.user_mobile) = ?11 ?ORDER BY a.user_mobile , a.declare_id DESC;
/* 當游標遍歷完所有數據的時候,set Done的值為1 */
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;
/* 當發生sql異常的時候set t_error的值為1 */
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
/* 開啟事務 */
START TRANSACTION;
/* 打開游標 */
OPEN rs;
/* 取游標當前的值,into后面是賦值的意思,被賦值變量的數目與sql查出來的字段數相等 */
FETCH NEXT FROM rs INTO id,mobile;
/* 在此處進行循環 */
REPEAT
IF NOT Done THEN
IF mobileTemp = mobile THEN
UPDATE farmer_certification_info set declare_id = maxId where declare_id = id;
UPDATE farmer_contact_info set declare_id = maxId where declare_id = id;
UPDATE farmer_industry_info set declare_id = maxId where declare_id = id;
UPDATE farmer_info set declare_id = maxId where declare_id = id;
UPDATE farmer_job_info set declare_id = maxId where declare_id = id;
UPDATE farmer_skill_info set declare_id = maxId where declare_id = id;
UPDATE training_class_user set declare_id = maxId where declare_id = id;
UPDATE training_class_evaluate set declare_id = maxId where declare_id = id;
UPDATE declare_info set `status`= 0 where declare_id = id;
ELSE
set mobileTemp = mobile;
set maxId = id;
END IF;
END IF;
IF t_error = 1 THEN
/* sql異常回滾 */
ROLLBACK;
ELSE
/* 提交事務 */
COMMIT;
END IF;
/* 向游標取出下一個值進行賦值 */
FETCH NEXT FROM rs INTO id,mobile;
/* 遍歷完Done=1,結束遍歷 */
UNTIL Done END REPEAT;
/*關閉游標*/
CLOSE rs;
END $$ /* 結束符,和開始定義的一致 */
/*
drop procedure mergeDeclare /* 刪除存儲過程 */
*/
/*
call mergeDeclare() /* 調用存儲過程 */
*/
標注:存儲過程沒有容器和數據概念,但可新建表借助表當作一個容器使用。
總結
以上是生活随笔為你收集整理的mysql存储过程注释方法_mysql存储过程 详细注释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10共享打印错误0x0000006
- 下一篇: 为什么说Java 程序员必须掌握 Spr