在进行数据库开发时,我们可能需要写很多存储过程,本文提供一个存储过程的模板,通过该模板可以简化存储过程的开发。

MySQL存储过程的范例模板,带返回值和异常处理的功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DROP PROCEDURE IF EXISTS sp_sample;
CREATE PROCEDURE sp_sample(OUT errno INT)
root:BEGIN
/*
功能:

IN参数:

OUT参数:
errno 存储过程异常标志(0-成功, 1-异常)
*/
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
SET errno = 1;
END;
SET errno = 0;
START TRANSACTION;
-- do what you want to do.
-- ...
COMMIT;
END;

其中,存储过程的异常捕获和回滚使用DECLARE...HANDLER实现:

1
2
3
4
5
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
SET errno = 1;
END;

关于DECLARE...HANDLER的用法见: MySQL的DECLARE...HANDLER使用