mysql 存储过程简单模板

http://database.51cto.com/art/201609/516968.htm

存储过程排错,一般要用错误处理器。详细内容参考上方链接。

使用示例:

 

set GLOBAL  log_bin_trust_function_creators=true;#表示创建的存储过程或者函数对二进制日志写入无影响

 

 

##定义一个错误信息展示函数,方便存储过程展示更精确的错误信息

DELIMITER $$

CREATE FUNCTION fn_get_error()

RETURNS VARCHAR(250)

BEGIN

    DECLARE code CHAR(5) DEFAULT '00000';

    DECLARE msg TEXT;

    DECLARE errno INT;

     

    GET DIAGNOSTICS CONDITION 1 code = RETURNED_SQLSTATE,  

        errno = MYSQL_ERRNO, msg = MESSAGE_TEXT;

     

    RETURN COALESCE(CONCAT("ERROR ", errno, " (", code, "): ", msg), '-');

END

$$  

 

 

##定义相关的存储过程,可参照此模板写存储过程,对排错和维护有意义

DELIMITER $$

CREATE PROCEDURE procedure_name()

BEGIN

    DECLARE errpos int default 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT 'SQLException encountered' as No_TLucky, errpos as Position_Error,fn_get_error() AS  Error_massage;

 

set errpos=1;/*错误位置1*/

    insert into test.test set  name='p1';

 

set errpos=2;

    insert into test.test set  name='p2';

    

set errpos=3;

    insert into test.test set  name='p3';

insert into test.test set  name=p2;

END

$$  

猜你喜欢

转载自blog.csdn.net/donghaixiaolongwang/article/details/80349807
今日推荐