Hinweise zum Umgang mit SQL-Fehler mit SQLSTATE

SQLSTATE gibt eine große Anzahl von anomalen Bedingungen in SQL. SQLSTATE ist ein Fünf-Zeichenfolge in dem nur die Großbuchstaben EIN durch Z und die Ziffern 0 bis 9 sind gültige Zeichen. Die Fünf-Zeichenkette wird in zwei Gruppen unterteilt: eine Zwei-Zeichen-Klasse-Code und einer dreistelligen Code Unterklasse.

Der Klassencode hält einen Status nach dem Abschluss einer SQL-Anweisung. Dieser Status könnte erfolgreichen Abschluss der Erklärung angeben, oder eine aus einer Reihe von wichtigen Arten von Fehlerbedingungen. Die Unterklasse Code enthält detaillierte Angaben über diese besondere Ausführung der Anweisung.

Der SQL-Standard definiert eine Klasse-Code, der mit den Buchstaben beginnt EIN durch H oder die Ziffern 0 bis 4- daher bedeuten diese Klasse Codes die gleiche Sache in jeder Implementierung. Klasse-Codes, die mit den Buchstaben beginnen ich durch Z oder die Ziffern 5 bis 9 sind offen gelassen, für Implementierer zu definieren, da die SQL-Spezifikation kann nicht jede Bedingung erwarten, dass in jeder Implementierung kommen kann.

Allerdings sollte Implementierer diese Nicht-Standard-Klasse-Codes so wenig wie möglich verwenden, um Migrationsprobleme von einem DBMS zu einem anderen zu vermeiden. Im Idealfall sollten Implementierer die Standardcodes verwenden die meiste Zeit und die Nicht-Standard-Codes nur unter den ungewöhnlichen Umständen.

bild0.jpg

Eine Klasse-Code 00 zeigt den erfolgreichen Abschluss. Klassencode 01 bedeutet, dass die Anweisung erfolgreich ausgeführt, aber eine Warnung erzeugt. Klassencode 02 zeigt einen keine Daten erhalten. Irgendein SQLSTATE Klassencode andere als 00, 01, oder 02 erfolgreich zeigt an, dass die Anweisung wurde nicht ausgeführt.

weil SQLSTATE Updates nach jeder SQL-Operation, können Sie es überprüfen, nachdem jede Anweisung ausführt. Ob SQLSTATE enthält 00000 (Erfolgreichen Abschluss), können Sie mit dem nächsten Schritt fortfahren. Wenn es irgendetwas anderes enthält, können Sie aus der Hauptlinie des Codes zu verzweigen, die Situation zu bewältigen. Die spezifische Klassencode und Unterklasse Code, der eine SQLSTATE welche von mehreren möglichen Aktionen enthält bestimmen Sie nehmen sollten.

Benutzen SQLSTATE in einem Modul Sprachprogramm, einen Verweis auf sie in der Prozedur-Definitionen, wie das folgende Beispiel zeigt:

VERFAHREN NUTRIENT (SQLSTATE,: foodname CHAR (20): Kalorien SMALLINT: Protein DECIMAL (5,1),: Fett DECIMAL (5,1) ,: DECIMAL Carbo (5,1)) INSERT INTO FOODS (FoodName, Kalorien , Protein, Fett, Kohlenhydrate) VALUES (: foodname,: Kalorien,: Eiweiß,: Fett,: carbo) -

An der entsprechenden Stelle in Ihrem prozeduralen Sprachprogramm können Sie Werte für die Parameter zur Verfügung zu stellen (vielleicht, indem sie von dem Benutzer Einholen) und dann die Prozedur aufrufen. Die Syntax dieser Operation variiert von einer Sprache in die andere, aber es sieht wie folgt aus:

foodname = "Okra, gekocht" -calories = 29 -Protein = 2,0 -fat = 0,3 -carbo = 6,0 -NUTRIENT (Staat, foodname, Kalorien, Eiweiß, Fett, carbo) -

Der Zustand SQLSTATE wird in der Variablen zurück Bundesland. Ihr Programm kann diese Variable untersuchen und dann die entsprechende Aktion auf der Grundlage der Variableninhalte.

Menü