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

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

在Java编程中,IOException异常是一个经常出现的异常类型。它在处理文件和网络连接等I/O操作时经常出现。本文将探讨Java中IOException异常的常见原因和解决方法。文件不存在或无法读取文件最常见的IOException异常是当试图打开一个不存在的文件或没有权限读取文件时抛出的异常。当我们使用FileInputStream或FileRead

Java中的NoSuchFieldError异常常见原因是什么?Java是一种跨平台的面向对象编程语言,多用于开发企业级应用程序和移动应用程序等。在Java程序开发中,NullPointerException、IndexOutOfBoundsException、ClassCastException等异常经常会出现,而NoSuchFieldError异常也是比

Java中的StackOverflowError异常常见原因是什么?在使用Java编程时,如果程序出现了StackOverflowError异常,那么程序将会崩溃,并且输出错误信息。那么什么是StackOverflowError异常,这种异常一般发生在哪些情况下呢?今天我们就来了解一下关于Java中StackOverflowError异常的常见原因。一、什么

Java中的ClassCastException异常常见原因是什么?Java语言中,ClassCastException异常是一种运行时异常,它发生在Java程序在运行时试图将一个对象强制转换为不兼容的数据类型时。在这种情况下,编译器将无法提前检查出类型不兼容的错误,而是在程序运行时抛出异常。在Java中,ClassCastException异常通常发生在以

Java中有一个非常常见的异常是IllegalArgumentException,也被称为“空对象异常”。该异常通常发生在开发者试图使用空对象调用一个方法或者进行某种操作时。本文将探讨这种异常的原因和如何处理此类异常。了解空对象异常当我们试图对空对象调用方法或使用该对象进行操作时,Java编译器会抛出IllegalArgumentException异常。例如

Java是一种高级编程语言,广泛使用于企业级应用程序的开发和部署。但是,在Java开发和部署过程中,可能会遇到一些异常情况,其中之一就是UnsupportedClassVersionError异常。本文将详细解释UnsupportedClassVersionError异常的原因,并介绍如何解决这个问题。一、UnsupportedClassVersionErr

Java中的SecurityException异常是一种常见的异常类型,它通常出现在Java应用程序安全方面的处理中。这个异常通常指的是安全管理器出现问题,或者应用程序试图访问受保护的资源而未被授权的情况。本文将探讨Java中的SecurityException异常在哪些场景下会出现,以及如何在应用程序中避免这种异常的发生。首先,Java中的Security


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Atom editor mac version download
The most popular open source editor

Dreamweaver Mac version
Visual web development tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 English version
Recommended: Win version, supports code prompts!
