MySQL之条件的定义和处理

8 篇文章 0 订阅

(1)条件是用来定义在处理过程中遇到问题时相应的处理步骤。

(2)条件定义的语法:

DECLARE  condition_name  CONDITION  FOR  codition_value

 

condition_value:

SQLSTATE [VALUE] sqlstate_value

| mysql_error_code

 

(3) 条件处理的语法:

DECLARE  handler_type  HANDLER  FOR  condition_value [,...] sp_statement

 

handler_type:

CONTINUE  |   EXIT  |  UNDO  

 

conditon_value:

SQLSTATE  [VALUE] sqlstate_value

|  condition_name

|  SQLWARING

|  NOT  FOUND

| SQLEXCEPTION

| mysql_error_code

 

示例:

下面对比有条件处理和没条件处理

 

没条件处理:(已经插入主键ID 1~200的记录)

CREATE  PROCEDURE  actor_insert()

BEGIN 

      SET   @x=1;

      INSERT  INTO  actor(actor_id, first_name,last_name) VALUES(201 , 'TEST', '201');

      SET  @X=2;

     INSERT  INTO actor(actor_id,first_name,last_name) VALUES(1,'TEST',‘1’);

     SET @x=3;

END ;

$$

 

call  actor_insert() 

 

增加了条件语句,用于处理主键重异常

CREATE PROCEDURE  actor_insert()

BEGIN

  DECLARE  CONTINUE  HANDLER  FOR   SQLSTATE  '23000' SET @X2=1;

  SET  @X=1;

INSERT  INTO  actor(actor_id,first_name,last_name)  VALUES(201,'TEST','201');

 SET   @x=2;

INSERT  INTO actor(actor_id,first_name,last_name)  VALUES(1,'TEST','1');

  SET @X=3;

END ; 

注释:调用条件处理的过程,再遇到主键重的错误时,会按照定义的处理方式进行处理。

handler_type: 支持CONTINUE(继续执行)和EXIT(执行终止)

continue_value的值分为:自定义(declare 声明变量);SQLDATA 值 ; mysql-error-code ; SQLWARNING ; NOT FOUND ; SQLEXCEPTION

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值