下面是用戶表,id是主鍵,不會重復
https://www.jianshu.com/p/b175066a1931


下面是存儲過程的創建,這個是一個比較全面的存儲過程,包括輸入,輸出,事務,循環,判斷,定義變量。常用的一些,我都寫進來了。
#將結束符號 改成 ;; 結束
DELIMITER ;;
#創建一個存儲過程,名稱是pre_affair ,輸入變量是 in_user_name 字符串型 ,輸出變量是out_rest 整形
CREATE PROCEDURE `pre_affair`(IN in_user_name VARCHAR(255), OUT out_rest INT)
BEGIN
#定義一個循環變量i,類型是整形,默認是5
DECLARE i INT DEFAULT 5;
#定義一個錯誤的變量,類型是整形,默認是0
DECLARE t_error INTEGER DEFAULT 0;
#捕獲到sql的錯誤,就設置t_error為1
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
#開啟事務
START TRANSACTION;
#刪除id是5的這條數據
DELETE FROM `user` WHERE id = 5;
#循環插入數據,這里是從 id是5插入到id是6為止
#注意:這里user表的id是5的這條被刪除了,因為id是主鍵,但是id是6的這條本身存在,如果這里插入id是6時,將會發生事務回滾,id是5的這條不會被刪除
WHILE i<7 DO
#插入一條數據進來
INSERT INTO `user`(id,user_name)VALUES(i,in_user_name);
#設置i每次循環加1
SET i = i + 1;
END WHILE;
#如果捕獲到錯誤
IF t_error=1 THEN
#回滾
ROLLBACK;
ELSE
#提交
COMMIT;
END IF;
#查看返回的結果,並給到輸出的變量中
SELECT t_error INTO out_rest;
END
;;
#將結束符號 改成 ; 結束
DELIMITER ;
