处理存储过程中的错误

使用PRINT语句显示错误信息
错误信息是临时的,只能显示给用户
RAISERROR 显示用户定义的错误信息时
可指定严重级别
设置系统变量@@ERROR
记录所发生的错误等
RAISERROR语句的用法如下:
msg_id:在sysmessages系统表中指定用户定义错误信息
msg_str:用户定义的特定信息,最长255个字符
severity:定义严重性级别。用户可使用的级别为0–18级
state:表示错误的状态,1至127之间的值
option:指示是否将错误记录到服务器错误日志中

例如调用存储过程时,如果传入的及格线参数不在0~100之间时,将弹出错误警告,终止存储过程的执行
定义存储过程代码如下:
CREATE PROCEDURE usp_stu
@Pass int = 60
AS
IF (NOT @Pass BETWEEN 0 AND 100)  --判断及格线是否不在取值范围内
BEGIN
RAISERROR ('及格线错误,请指定-之间的分数,统计中断退出',16,1)
RETURN
END
调用代码如下
EXEC usp_stu 1000

RAISERROR()引发系统错误,指定错误的严重级别16,调用状态为1(默认),并影响@@ERROR系统变量的值!

本文链接: http://www.snowdi.com/709.html → 转载请注明文章出自 雪頔网
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 存储过程错误处理可以使用 `DECLARE` 声明一个异常,并使用 `SIGNAL` 抛出异常,或者使用 `RESIGNAL` 重新抛出异常。以下是一个示例代码: ``` DELIMITER // CREATE PROCEDURE example_procedure (IN param1 INT, IN param2 VARCHAR(255)) BEGIN DECLARE custom_exception CONDITION FOR SQLSTATE '45000'; IF param1 <= 0 THEN SIGNAL custom_exception SET MESSAGE_TEXT = 'Parameter 1 must be greater than 0'; END IF; IF param2 = '' THEN SIGNAL custom_exception SET MESSAGE_TEXT = 'Parameter 2 cannot be empty'; END IF; -- 正常的存储过程逻辑 ... END // DELIMITER ; ``` 在这个示例,我们声明了一个名为 `custom_exception` 的异常,它将在参数不符合预期时被抛出。我们使用 `SIGNAL` 语句设置异常的消息文本,并使用 `SET MESSAGE_TEXT` 子句设置消息内容。在存储过程的主体,我们可以使用 `IF` 语句来检查参数的值,并在必要时使用 `SIGNAL` 抛出异常。 要使用存储过程抛出的异常,你可以在调用存储过程时使用 `DECLARE` 声明一个异常处理程序,并在 `BEGIN` 和 `END` 块指定处理程序的代码。例如: ``` DECLARE custom_exception CONDITION FOR SQLSTATE '45000'; BEGIN CALL example_procedure(-1, 'hello world'); END -- 处理异常 DECLARE exit handler for custom_exception BEGIN -- 处理异常的代码 END; ``` 在这个示例,我们声明了一个名为 `custom_exception` 的异常处理程序,并在 `CALL` 语句调用了 `example_procedure` 存储过程。如果存储过程抛出了异常,我们的异常处理程序将会被触发,并执行所需的代码来处理异常。注意,在处理程序,我们可以将异常信息记录到日志文件,或者向用户显示错误消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值