首页 数据库 mysql教程 MySQL 5.5新增SIGNAL异常处理_MySQL

MySQL 5.5新增SIGNAL异常处理_MySQL

Jun 01, 2016 pm 01:41 PM
异常

bitsCN.com
MySQL 5.5新增SIGNAL异常处理 MySQL 从 5.0 开始支持存储过程,到现在最新版本5.5 已经好几个年头了。 虽然MYSQL的异常处理不是很完善,但是处理大多数的应用还是足够了。   异常处理的语句有如下几种:1. DECLARE ... CONDITION.2. DECLARE ... HANDLER.3. RESIGNAL.4. SIGNAL. 第一种,名为条件声明。DECLARE condition_name CONDITION FOR condition_value 这里condition_name 为标准的变量命名, condition_value 为SQLSTATE 值 或者 MySQL 自身的ERROR CODE.单独的condition 语句不能直接运行。 只能作为第二种的一部分。   第二种, 名为条件处理。第一种声明好了,接下来自然要做相应的处理。DECLARE handler_action HANDLER    FOR condition_value [, condition_value] ...    statement handler_action:    CONTINUE  | EXIT  | UNDO condition_value:    mysql_error_code  | SQLSTATE [VALUE] sqlstate_value  | condition_name  | SQLWARNING  | NOT FOUND  | SQLEXCEPTION handler_action 代表处理的动作,目前有效的有两种, 继续和直接退出。condition_value 有好几种,其中包括前面条件声明里的SQLSTATE, MYSQL EEROR CODE, condition_name 以及范围混淆的其他两种SQLWARNING,SQLEXCEPTION. NOT FOUND表示任何不存在的WARNING或者ERROR。 第三种, 代表伪装系统的错误信息以及代码,刷新当前警告缓冲区域。RESIGNAL [condition_value]    [SET signal_information_item    [, signal_information_item] ...] condition_value:    SQLSTATE [VALUE] sqlstate_value  | condition_name signal_information_item:    condition_information_item_name = simple_value_specification condition_information_item_name:    CLASS_ORIGIN  | SUBCLASS_ORIGIN  | MESSAGE_TEXT  | MYSQL_ERRNO  | CONSTRAINT_CATALOG  | CONSTRAINT_SCHEMA  | CONSTRAINT_NAME  | CATALOG_NAME  | SCHEMA_NAME  | TABLE_NAME  | COLUMN_NAME  | CURSOR_NAME 特别注意的是可以伪装的具体东西很多,包括错误代码(MYSQL自身的东东),错误内容,错误的数据库名,表名,列名等等。 第四种,SIGNAL和RESIGNAL差别不大,我们记住signal 不能单独运行,resignal可以单独运行。SIGNAL condition_value    [SET signal_information_item    [, signal_information_item] ...] condition_value:    SQLSTATE [VALUE] sqlstate_value  | condition_name signal_information_item:    condition_information_item_name = simple_value_specification condition_information_item_name:    CLASS_ORIGIN  | SUBCLASS_ORIGIN  | MESSAGE_TEXT  | MYSQL_ERRNO  | CONSTRAINT_CATALOG  | CONSTRAINT_SCHEMA  | CONSTRAINT_NAME  | CATALOG_NAME  | SCHEMA_NAME  | TABLE_NAME  | COLUMN_NAME  | CURSOR_NAME 我们现在给几个例子。 不用RESIGNAL/SIGNAL。[sql] DELIMITER $$    USE `t_girl`$$    DROP PROCEDURE IF EXISTS `sp_signal1`$$    CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_signal1`(      IN f_id INT      )  BEGIN        DECLARE con1 TINYINT DEFAULT 0;        DECLARE con1 CONDITION FOR SQLSTATE '23000';        DECLARE CONTINUE HANDLER FOR con1        BEGIN          SELECT 'Error Code : 22/r/nDuplicated!';        END;        INSERT INTO user_info VALUES (f_id);      END$$    DELIMITER ;   CALL sp_signal1(12); query result resultError Code : 22Duplicated! 用RESIGNAL/SIGNAL 重刷当前错误诊断区域。 [sql] DELIMITER $$         USE `t_girl`$$      DROP PROCEDURE IF EXISTS `sp_signal1`$$      CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_signal1`(      IN f_id INT      )  BEGIN        DECLARE con1 TINYINT DEFAULT 0;        DECLARE con1 CONDITION FOR SQLSTATE '23000';        DECLARE CONTINUE HANDLER FOR con1        BEGIN          resignal SET schema_name = 'action',                table_name = 'action_tb',                message_text = 'Duplicated!',                       mysql_errno = 22;  /*             signal con1 SET schema_name = 'action',                table_name = 'action_tb',                message_text = 'Duplicated!',                       mysql_errno = 22;         */        END;        INSERT INTO user_info VALUES (f_id);      END$$    DELIMITER ;   CALL sp_signal1(12);   Query : call sp_signal1(12)Error Code : 22Duplicated!Execution Time : 00:00:00:000Transfer Time  : 00:00:00:000Total Time     : 00:00:00:000  作者 四爷 bitsCN.com

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java中的OutOfMemoryError异常常见原因是什么? Java中的OutOfMemoryError异常常见原因是什么? Jun 25, 2023 pm 08:43 PM

Java是目前使用最广泛的编程语言之一,但在使用Java开发应用程序时,很容易遇到“OutOfMemoryError”异常错误,这种错误经常会给开发者带来一些挑战。究竟什么原因会导致Java中的OutOfMemoryError异常呢?接下来,我们就来详细了解一下。内存泄漏(MemoryLeak)内存泄漏是指当一个对象不能被垃圾回收器回收时,就会导致内存泄漏

解决Java反射异常(ReflectiveOperationException)的方法 解决Java反射异常(ReflectiveOperationException)的方法 Aug 26, 2023 am 09:55 AM

解决Java反射异常(ReflectiveOperationException)的方法在Java开发中,反射(Reflection)是一种强大的机制,它允许程序在运行时动态地获取和操作类、对象、方法和属性等。通过反射,我们可以实现一些灵活的功能,比如动态创建对象、调用私有方法、获取类的注解等。然而,使用反射也会带来一些潜在的风险和问题,其中之一就是反射异常(

如何解决Java线程中断超时异常(ThreadInterruptedTimeoutExceotion) 如何解决Java线程中断超时异常(ThreadInterruptedTimeoutExceotion) Aug 18, 2023 pm 01:57 PM

如何解决Java线程中断超时异常(ThreadInterruptedTimeoutException)在Java多线程编程中,经常会遇到线程执行时间过长的情况。为了避免线程占用过多的系统资源,我们通常会设置一个超时时间,当线程执行时间超过超时时间时,我们希望能够中断线程的执行。Java中提供了线程中断的机制,通过调用线程的interrupt()方法可以向线程

MIT最新力作:用GPT-3.5解决时间序列异常检测问题 MIT最新力作:用GPT-3.5解决时间序列异常检测问题 Jun 08, 2024 pm 06:09 PM

今天给大家介绍一篇MIT上周发表的文章,使用GPT-3.5-turbo解决时间序列异常检测问题,初步验证了LLM在时间序列异常检测中的有效性。整个过程没有进行finetune,直接使用GPT-3.5-turbo进行异常检测,文中的核心是如何将时间序列转换成GPT-3.5-turbo可识别的输入,以及如何设计prompt或者pipeline让LLM解决异常检测任务。下面给大家详细介绍一下这篇工作。图片论文标题:Largelanguagemodelscanbezero-shotanomalydete

浪人崛起水池的异常任务攻略 浪人崛起水池的异常任务攻略 Mar 26, 2024 pm 08:06 PM

水池的异常是游戏中一个支线任务,很多玩家想知道水池的异常任务怎么完成,其实非常简单,首先我们要掌握在水中拍摄的技术,才可以接取任务,调查恶臭味的来源,之后发现原来是水池下面有很多的尸体,具体内容一起来看看这篇浪人崛起水池的异常任务图文攻略。浪人崛起水池的异常任务攻略1、和饭冢对话,学习在水中拍摄的技术。2、前往下图位置接取水池的异常任务。3、来到任务地点和NPC对话,了解到附近的水池有一股恶臭味。4、前往水池调查。5、大概游到下图位置,潜入到水下,会发现很多的尸体。6、使用相机对尸体进行拍摄。7

如何解决Java网络连接重置异常(ConnectionResetException) 如何解决Java网络连接重置异常(ConnectionResetException) Aug 26, 2023 pm 07:57 PM

如何解决Java网络连接重置异常(ConnectionResetException)在进行Java网络编程时,经常会遇到网络连接重置异常(ConnectionResetException),该异常表示在连接建立后,对方主机意外地关闭了连接。这可能由于对方主机崩溃、网络中断或防火墙配置等原因引起。在编写网络应用程序时,我们需要处理这种异常,以确保程序能够正常运

声卡驱动异常怎么解决 声卡驱动异常怎么解决 Feb 22, 2024 am 09:10 AM

一些用户在使用电脑的时候忽然发现自己的声卡驱动有了异常,那么遇到这种情况大家可以从设备管理器里,更新一下驱动或者是回退一下驱动看看是否成功解决。声卡驱动异常怎么解决1、右键“此电脑”选择“管理”2、点击”设备管理器“,点击”声音“3、右键驱动选择“属性”4、点击上方的“驱动程序”,然后再下面就可以选择“更新或者是回退”

C++ 函数异常与单测:确保代码健全性 C++ 函数异常与单测:确保代码健全性 May 03, 2024 am 09:18 AM

异常处理和单测是确保C++代码健全性的重要实践。异常通过try-catch块处理,当代码引发异常时会跳转到catch块。单元测试可隔离代码测试,以验证异常处理在不同情况下是否按预期工作。实战案例:sumArray函数计算数组元素总和,并抛出异常以处理空输入数组。单元测试可验证函数在异常情况下的预期行为,如当数组为空时抛出std::invalid_argument异常。结论:通过利用异常处理和单测,我们可以处理异常情况、防止代码崩溃,并确保代码在异常情况下按预期运行。

See all articles