mysql的存储过程中如何定义错误处理??

功能上讲DECLARE Condition出现的时间比较早,功能也比较简单,它可以通过错误编号或者SQLSTATE来触发一各名字,说明白一点就是当某个错误编号出现的时候替换一个名字给它。这样调用的时候,我们不用去记一大串错误编号了。它的标准语法我们可以在mysql的附注中找到。DECLARE condition_name CONDITION FOR ...
mysql的存储过程中如何定义错误处理??
declare是用来定义变量和常用处理、声明之类的关键字。在mysql存储过程出现之前declare是一块鸡肋,大家常用declare来定义局部变量,我习惯性的还是使用set来定义变量(虽然是全局的,但是来的方便)。存储过程出现后declare的标准处理定义就变成了非常强大的工具,可以用来为存储过程添加一些非常强大的错误处理机制。首先需要提一点的是declare定义变量如果想定义varchar型的,必须注明参数最大长度,即declare varchar(20).在这里我们不深究它用来定义参数的小细节我们主要来研究DECLARE Condition 和 DECLARE HandlerDECLARE Condition 和 DECLARE Handler可以说是为了处理错误而生的。功能上讲DECLARE Condition出现的时间比较早,功能也比较简单,它可以通过错误编号或者SQLSTATE来触发一各名字,说明白一点就是当某个错误编号出现的时候替换一个名字给它。这样调用的时候,我们不用去记一大串错误编号了。它的标准语法我们可以在mysql的附注中找到。DECLARE condition_name CONDITION FOR condition_valuecondition_value:例子如下:DECLARE errname CONDITION FOR SQLSTATE '23000'将返回SQLSTATE信息为23000的错误定名为errname这个名字就可以被我们的绝对重头戏DECLARE Handler调用了,在DECLARE Handler中可以定义错误的处理办法,可以使用begin和end来标记语句块,可以单独使用rollback。处理的过程也可以定义为继续执行和中断存储过程。标准语法:DECLARE handler_type HANDLER FOR condition_value[,...] sp_statementhandler_type: 处理的过程。CONTINUE 继续执行未完成的存储过程,直至结束。(常用,默认)| EXIT 出现错误即自动跳出所在的begin不再执行后面的语句。condition_value: 处理的触发条件SQLSTATE [VALUE] sqlstate_value 不用说了,最常用的错误定义,自己去查错误列表吧。| condition_name 我们刚刚定义的那个名字errnmae就是用在这里的。| SQLWARNING 这个太好用了,从错误编号01开始的错误。相当于错误的通配符。| NOT FOUND 和上面差不多,从02开始。| SQLEXCEPTION 上面两个中没有包括的错误它都可以用来触发,就是说你想定义只要出错就触发的话就定义出错条件为SQLWARNING+SQLEXCEPTION。| mysql_error_code 错误编号,和第一个不一样,不过同样可以在错误列表从中查到,是我比较常用的。例子DECLARE errname CONDITION FOR SQLSTATE '23000'; 给导致错误23000的错误定义名字为errnameDECLARE continue handler for errname 当errname发生时作下面的处理BEGIN 语句开始set @x=1; 设置@x=12013-10-13
mengvlog 阅读 331 次 更新于 2025-09-09 04:24:58 我来答关注问题0
  •  宸辰游艺策划 MySQL里面sql语句调用存储过程,该如何写?

    比如,我们定义一个名为sp_add的存储过程,它接受两个整数参数a和b,并将它们的和存储在输出变量c中。具体定义如下:CREATE PROCEDURE sp_add(a int, b int, out c int)begin set c=a + b;end;接下来,我们就可以调用这个存储过程,并将结果存储在变量@a中:call sp_add(1, 2, @a);最...

  •  墨飞荷yO 浅谈MySQL存储过程中declare和set定义变量的区别

    MySQL存储过程中,定义变量有两种方式:1.使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量。2.以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:DECLARE var1 INT DEFAULT 0;主要用在存储过程...

  •  武汉誉祥科技 请问mysql的insert 语句存储过程怎样写啊 给个例子就系了,谢谢啊!

    在MySQL中,使用存储过程编写`INSERT`语句时,可以采用循环结构来批量插入数据。以下是一个示例,展示了如何通过存储过程实现这一功能:首先,我们定义一个存储过程`pro10`,并设置一个变量`i`用于循环计数。sql delimiter // create procedure pro10()begin declare i int;set i=0;while i

  • 1、存储过程定义:存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。2、特点:封装,复用 ...

  • 存储过程是由一系列SQL语句构成的,根据传入的参数(也可以没有),通过简单的调用即可实现比单个SQL语句更为复杂的功能。这些存储过程被存储在数据库服务器端,编译一次后即可多次使用,无需重复编译。它们主要用于控制存储过程。而事务则是由一系列数据更改操作组成的整体。如果事务中包含的操作失败或被用户...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部