Heim Datenbank MySQL-Tutorial Detaillierte Erläuterung der MySQL-Ausnahmedefinition und Ausnahmebehandlung

Detaillierte Erläuterung der MySQL-Ausnahmedefinition und Ausnahmebehandlung

Dec 15, 2016 pm 04:11 PM

In MySQL erfordern bestimmte Ausnahmen eine spezielle Behandlung. Diese Ausnahmen können mit Fehlern sowie einer allgemeinen Flusskontrolle innerhalb der Unterroutine verknüpft sein. Durch das Definieren von Ausnahmen werden die während der Programmausführung auftretenden Probleme im Voraus definiert. Die Ausnahmebehandlung definiert die Behandlungsmethode, die angewendet werden soll, wenn Probleme auftreten, und stellt sicher, dass gespeicherte Prozeduren oder Funktionen weiterhin ausgeführt werden können, wenn Fehler oder Warnungen auftreten.

1 Ausnahmedefinition

1.1 Syntax

DECLARE Bedingungsname BEDINGUNG FÜR [condition_type];

1.2 Beschreibung

Der Parameter „condition_name“ stellt den Namen der Ausnahme dar; SQLSTATE [VALUE] sqlstate_value|mysql_error_code besteht aus:

Sowohl sqlstate_value als auch mysql_error_code können MySQL-Fehler darstellen; sqlstate_value ist ein Fehlercode vom Typ String mit der Länge 5; 1148(42000)" Fehler, der Name ist command_not_allowed. Es gibt zwei Methoden:




2 Benutzerdefinierte Ausnahmebehandlung


2.1 Ausnahmebehandlungssyntax

//方法一:使用sqlstate_value 
DECLARE command_not_allowed CONDITION FOR SQLSTATE '42000′; 
//方法二:使用mysql_error_code 
DECLARE command_not_allowed CONDITION FOR 1148;
Nach dem Login kopieren


2.2 Parameterbeschreibung


handler_type: CONTINUE|EXIT|UNDO
DECLARE handler_type HANDLER FOR condition_value [,...] sp_statement
Nach dem Login kopieren

handler_type ist die Fehlerbehandlungsmethode und der Parameter ist einer von drei Werten;

CONTINUE bedeutet, dass die Ausführung ohne Verarbeitung fortgesetzt wird; 🎜> EXIT bedeutet, dass ein Fehler aufgetreten ist.
UNDO bedeutet, den vorherigen Vorgang rückgängig zu machen, nachdem ein Fehler aufgetreten ist.


condition_value: SQLSTATE [VALUE] sqlstate_value|. Bedingungsname|SQLWARNING|NOT FOUND|SQLEXCEPTION|mysql_error_code


condition_value gibt den Fehlertyp an
SQLSTATE [VALUE] sqlstate_value ist ein String-Fehlerwert mit 5 Zeichen;
bedingungsname bedeutet DECLARE Der durch CONDITION definierte Fehlerbedingungsname stimmt mit allen SQLSTATE-Fehlercodes überein, die mit 01 beginnen FOUND stimmt mit allen SQLSTATE-Fehlercodes überein, die mit 02 beginnen. SQLEXCEPTION stimmt mit allen SQLSTATE-Fehlercodes überein, die nicht SQLWARNING oder NOT sind Von FOUND erfasster SQLSTATE-Fehlercode;
mysql_error_code entspricht dem numerischen Fehlercode


2.3 Ausnahmeabfangmethode



/




3 Umfassendes Beispiel

Erstellen Sie eine Tabelle, legen Sie den Primärschlüssel der Tabelle fest und sehen Sie sich die Ausführung an, ohne die Ausnahmebehandlung zu definieren und die Ausnahmebehandlung zu definieren Welcher Schritt.

/方法一:捕获sqlstate_value异常 
//这种方法是捕获sqlstate_value值。如果遇到sqlstate_value值为”42S02″,执行CONTINUE操作,并输出”NO_SUCH_TABLE”信息 
DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02′ SET @info='NO_SUCH_TABLE'; 
  
//方法二:捕获mysql_error_code异常 
//这种方法是捕获mysql_error_code值。如果遇到mysql_error_code值为1146,执行CONTINUE操作,并输出”NO_SUCH_TABLE”信息; 
DECLARE CONTINUE HANDLER FOR 1146 SET @info='NO_SUCH_TABLE'; 
 
//方法三:先定义条件,然后捕获异常 
DECLARE no_such_table CONDITION FOR 1146; 
DECLARE CONTINUE HANDLER FOR NO_SUCH_TABLE SET @info='NO_SUCH_TABLE';  
  
//方法四:使用SQLWARNING捕获异常 
DECLARE EXIT HANDLER FOR SQLWARNING SET @info='ERROR';  
  
//方法五:使用NOT FOUND捕获异常 
DECLARE EXIT HANDLER FOR NOT FOUND SET @info='NO_SUCH_TABLE';
  
//方法六:使用SQLEXCEPTION捕获异常 
DECLARE EXIT HANDLER FOR SQLEXCEPTION SET @info='ERROR';
Nach dem Login kopieren

Beispiel 1: Ohne Definition von Ausnahmen


Gespeicherte Prozedur und Ergebnis aufrufen:


show databases;
use wms;
create table location
(
location_id int primary key,
location_name varchar(50)
);
Nach dem Login kopieren


Hinweis: Bevor Sie Beispiel 2 ausführen, müssen Sie die Daten in der Tabelle löschen, sich abmelden und erneut anmelden, um den Einfluss der Clientvariablen @x zu vermeiden. Detaillierte Anweisungen finden Sie im ersten Punkt im Fazit.

DELIMITER //
CREATE PROCEDURE handlerInsertNoException()
BEGIN
 /*DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2=1;*/
 SET @x=1;
 INSERT INTO location VALUES (1,'Beijing');
 SET @x=2;
 INSERT INTO location VALUES (1,'Wuxi');
 SET @x=3;
END;
//
DELIMITER ;
Nach dem Login kopieren

Beispiel 2: Beim Definieren der Ausnahmebehandlung:


Aufrufen gespeicherter Prozeduren und Ergebnisse:
mysql> call handlerInsertNoException();
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> select @x;
+------+
| @x  |
+------+
|  2 |
+------+
1 row in set (0.00 sec)
  
mysql> select * from location;
+-------------+---------------+
| location_id | location_name |
+-------------+---------------+
|      1 | Beijing    |
+-------------+---------------+
1 row in set (0.00 sec)
Nach dem Login kopieren


Erklärung und Schlussfolgerung:

mysql> truncate table location;
Query OK, 0 rows affected (0.04 sec)
mysql> select * from location;
Empty set (0.00 sec)
mysql> exit;
Bye
  
david@Louis:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 53
Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu)
  
mysql> use wms;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
  
Database changed
mysql> select * from location;
Empty set (0.00 sec)
  
mysql> select @x;
+------+
| @x  |
+------+
| NULL |
+------+
1 row in set (0.00 sec)
Nach dem Login kopieren

1. In MySQL stellt @var_name Benutzervariablen dar und verwendet die SET-Anweisung, um ihnen Werte zuzuweisen. Variablen, die von einem Client definiert werden, sind nicht möglich von anderen Kunden eingesehen oder genutzt werden. Wenn der Client beendet wird, werden alle Variablen für diese Clientverbindung automatisch freigegeben.

DELIMITER //
CREATE PROCEDURE handlerInsertWithException()
BEGIN
 DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2=1;
 SET @x=1;
 INSERT INTO location VALUES (1,'Beijing');
 SET @x=2;
 INSERT INTO location VALUES (1,'Wuxi');
 SET @x=3;
END;
//
DELIMITER ;
Nach dem Login kopieren

2. Da in Beispiel 1 die Ausnahmeanweisung „“ mit Anmerkungen versehen ist, löst das Einfügen desselben Primärschlüssels in die Tabelle eine Ausnahme aus und verwendet den Standardpfad (EXIT) und zeigt dies an. x gibt 2 zurück, was bedeutet, dass die folgende INSERT-Anweisung beendet wurde, ohne ausgeführt zu werden.

mysql> CALL handlerInsertWithException();
Query OK, 0 rows affected (0.09 sec)
  
mysql> select @x;
+------+
| @x  |
+------+
|  3 |
+------+
1 row in set (0.00 sec)
Nach dem Login kopieren

3. Die Ausnahmebehandlung ist definiert. Wenn zu diesem Zeitpunkt ein Fehler auftritt, wird die Ausführung gemäß der Ausnahmedefinition fortgesetzt. aber Nur die ersten Daten werden in die Tabelle eingefügt. Zu diesem Zeitpunkt zeigt die Benutzervariable @x=3 an, dass die Ausführung beendet ist.


Das Obige ist die detaillierte Erklärung von MySQL Ich hoffe, dass es für alle hilfreich ist. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn).


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung? Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung? Mar 19, 2025 pm 03:51 PM

In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen? Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen? Mar 18, 2025 pm 12:01 PM

In Artikel werden die Konfiguration der SSL/TLS -Verschlüsselung für MySQL, einschließlich der Erzeugung und Überprüfung von Zertifikaten, erläutert. Das Hauptproblem ist die Verwendung der Sicherheitsauswirkungen von selbstsignierten Zertifikaten. [Charakterzahl: 159]

Wie behandeln Sie große Datensätze in MySQL? Wie behandeln Sie große Datensätze in MySQL? Mar 21, 2025 pm 12:15 PM

In Artikel werden Strategien zum Umgang mit großen Datensätzen in MySQL erörtert, einschließlich Partitionierung, Sharding, Indexierung und Abfrageoptimierung.

Was sind einige beliebte MySQL -GUI -Tools (z. B. MySQL Workbench, PhpMyAdmin)? Was sind einige beliebte MySQL -GUI -Tools (z. B. MySQL Workbench, PhpMyAdmin)? Mar 21, 2025 pm 06:28 PM

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]

Wie lassen Sie eine Tabelle in MySQL mit der Drop -Tabelle -Anweisung fallen? Wie lassen Sie eine Tabelle in MySQL mit der Drop -Tabelle -Anweisung fallen? Mar 19, 2025 pm 03:52 PM

In dem Artikel werden in MySQL die Ablagerung von Tabellen mithilfe der Drop -Tabellenerklärung erörtert, wobei Vorsichtsmaßnahmen und Risiken betont werden. Es wird hervorgehoben, dass die Aktion ohne Backups, die Detaillierung von Wiederherstellungsmethoden und potenzielle Produktionsumfeldgefahren irreversibel ist.

Erläutern Sie InnoDB Volltext-Suchfunktionen. Erläutern Sie InnoDB Volltext-Suchfunktionen. Apr 02, 2025 pm 06:09 PM

Die Volltext-Suchfunktionen von InnoDB sind sehr leistungsfähig, was die Effizienz der Datenbankabfrage und die Fähigkeit, große Mengen von Textdaten zu verarbeiten, erheblich verbessern kann. 1) InnoDB implementiert die Volltext-Suche durch invertierte Indexierung und unterstützt grundlegende und erweiterte Suchabfragen. 2) Verwenden Sie die Übereinstimmung und gegen Schlüsselwörter, um den Booleschen Modus und die Phrasesuche zu unterstützen. 3) Die Optimierungsmethoden umfassen die Verwendung der Word -Segmentierungstechnologie, die regelmäßige Wiederaufbauung von Indizes und die Anpassung der Cache -Größe, um die Leistung und Genauigkeit zu verbessern.

Wie repräsentieren Sie Beziehungen mit fremden Schlüsseln? Wie repräsentieren Sie Beziehungen mit fremden Schlüsseln? Mar 19, 2025 pm 03:48 PM

In Artikeln werden ausländische Schlüssel zur Darstellung von Beziehungen in Datenbanken erörtert, die sich auf Best Practices, Datenintegrität und gemeinsame Fallstricke konzentrieren.

Wie erstellen Sie Indizes für JSON -Spalten? Wie erstellen Sie Indizes für JSON -Spalten? Mar 21, 2025 pm 12:13 PM

In dem Artikel werden in verschiedenen Datenbanken wie PostgreSQL, MySQL und MongoDB Indizes für JSON -Spalten in verschiedenen Datenbanken erstellt, um die Abfrageleistung zu verbessern. Es erläutert die Syntax und die Vorteile der Indizierung spezifischer JSON -Pfade und listet unterstützte Datenbanksysteme auf.

See all articles