DELIMITER $drop procedure if exists insert_f_arenarank$create procedure ' Insert_f_arenarank ' (in uid varchar (100)) Begindeclare _prep int;declare _id int;declare t_error INTEGER DEFAULT 0; DECLARE EXIT HANDLER for SQLEXCEPTION SET t_error=1;start transaction; Set _prep = (select id from T_arenarank where next is null), insert into T_arenarank (USERID,PREP) values (uid,_prep); set _i D = @ @IDENTITY; Update T_arenarank Set next = _id where id=_prep;if t_error=1 then rollback;else commit;end if; End$delimiter;
1.varchar (100) brackets and their contents are not omitted;
2.# is not annotated;
3. When judging if there is an error: DECLARE EXIT HANDLER for SQLEXCEPTION SET t_error=1;
Rather than declare continue.
Attached: 3 Types of errors:
DECLARE exit HANDLER for 1062 select ' key value repeat ';D eclare exit HANDLER for SQLEXCEPTION Select ' SQLEXCEPTION exception ';D eclare EXIT HAN Dler for SQLSTATE ' 23000 ' Select ' SQLSTATE 23000 ';
MySQL stored procedures