Stored procedures 当存储过程出错时,如何设置参数?
我正在Stored procedures 当存储过程出错时,如何设置参数?,stored-procedures,mariadb,Stored Procedures,Mariadb,我正在mariadb 5.5上编写存储过程,并试图在其中发生SQL异常时返回错误代码 我的代码如下 delimiter $$ CREATE PROCEDURE sp_test( IN fooin varchar(50), INOUT fooout varchar(50) ) BEGIN DECLARE EXIT H
mariadb 5.5
上编写存储过程,并试图在其中发生SQL异常时返回错误代码
我的代码如下
delimiter $$
CREATE PROCEDURE sp_test(
IN fooin varchar(50),
INOUT fooout varchar(50)
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET fooout = '9999'; #which means error
RESIGNAL;
END;
SET fooout = '0000';
select now_(); # Error happens here on my purpose
END$$
DELIMITER ;
MariaDB [emsdevdb]> call sp_test('foo',@result);
ERROR 1305 (42000): FUNCTION emsdevdb.now_ does not exist
MariaDB [emsdevdb]> select @result;
+---------+
| @result |
+---------+
| NULL |
+---------+
1 row in set (0.00 sec)
结果如下所示
delimiter $$
CREATE PROCEDURE sp_test(
IN fooin varchar(50),
INOUT fooout varchar(50)
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET fooout = '9999'; #which means error
RESIGNAL;
END;
SET fooout = '0000';
select now_(); # Error happens here on my purpose
END$$
DELIMITER ;
MariaDB [emsdevdb]> call sp_test('foo',@result);
ERROR 1305 (42000): FUNCTION emsdevdb.now_ does not exist
MariaDB [emsdevdb]> select @result;
+---------+
| @result |
+---------+
| NULL |
+---------+
1 row in set (0.00 sec)
为什么@result
打印空值而不是“9999”
如果出现SQL异常
,如何返回我自己的错误代码
NULL
out
参数的值表示存储过程遇到错误
如有任何建议,将不胜感激
提前感谢。试试:
分隔符$$
如果存在sp_测试,则执行下降程序$$
创建程序sp_测试(
在fooin varchar(50),
INOUT FOOUT varchar(50)
)
开始
为SQLEXCEPTION声明退出处理程序
开始
放样='9999'#这意味着错误
--辞职的;
终止
放样='0000';
选择“立即”;#我故意在这里出错
结束$$
定界符;
SET@result:=NULL;
调用sp_测试('foo',@result);
选择@result;