Cómo manejar errores de SQL con sqlstate

SQLSTATE especifica un gran número de condiciones anómalas en SQL. SQLSTATE es una cadena de cinco caracteres en el que sólo las letras mayúsculas LA mediante Z y los números del 0 al 9 son caracteres válidos. La cadena de cinco caracteres se divide en dos grupos: un código de clase de dos caracteres y un código de subclase de tres caracteres.

El código de clase tiene un estado después de la finalización de una instrucción SQL. Ese estado podría indicar la finalización con éxito de la declaración, o uno de varios de los principales tipos de condiciones de error. El código de subclase proporciona detalles adicionales sobre este particular, la ejecución de la sentencia.

El estándar SQL define ningún código de clase que comienza con las letras LA mediante H o los números del 0 al 4, por lo tanto, estos códigos de clase significan lo mismo en cualquier aplicación. Códigos de clase que comienzan con las letras yo mediante Z o los números 5 al 9 se dejan abiertas para los implementadores de definir porque la especificación SQL no puede anticipar todas las condiciones que pueden surgir en cada aplicación.

Sin embargo, los ejecutores deben usar estos códigos de clase no estándar lo menos posible para evitar problemas de migración de un DBMS a otro. Idealmente, los ejecutores deben utilizar los códigos estándar mayor parte del tiempo y los códigos no estándar sólo bajo las circunstancias más inusuales.

imagen0.jpg

Un código de clase de 00 indica la finalización con éxito. Código de clase 01 significa que la sentencia ejecutado con éxito, pero produce una advertencia. Código de clase 02 indica una condición de ausencia de datos. Alguna SQLSTATE código de clase que no sea 00, 01, o 02 indica que la declaración no se ha ejecutado con éxito.

Porque SQLSTATE actualizaciones después de cada operación de SQL, se puede comprobar que después ejecuta cada declaración. Si SQLSTATE contiene 00000 (completar con éxito), se puede proceder con la siguiente operación. Si contiene algo más, es posible que desee expandirse fuera de la línea principal de su código para manejar la situación. El código y código de clase subclase específica de que un SQLSTATE Contiene determinar cuál de varias acciones posibles que debe tomar.

Para usar SQLSTATE en un programa de lenguaje de módulo, incluir una referencia a ella en sus definiciones de procedimientos, como muestra el siguiente ejemplo:

NUTRIENTES PROCEDIMIENTO (SQLSTATE,: CHAR foodname (20),: calorías SMALLINT,: DECIMAL proteína (5,1),: DECIMAL grasa (5,1) ,: DECIMAL carbo (5,1)) INSERT INTO ALIMENTOS (FoodName, Calorías , proteínas, grasas, hidratos de carbono) VALUES (: foodname,: calorías, proteínas:,: grasa,: carbo) -

En el lugar apropiado en su programa de lenguaje de procedimientos, puede hacer que los valores disponibles para los parámetros (tal vez mediante la solicitud de ellos por parte del usuario) y luego llamar al procedimiento. La sintaxis de esta operación varía de una lengua a otra, pero se ve algo como esto:

foodname = "okra, hierve" -calories = 29-proteína = 2,0 -fat = 0,3 -carbo = 6,0 -NUTRIENT (estado, foodname, calorías, proteínas, grasas, carbo) -

El estado de SQLSTATE se devuelve en la variable estado. Su programa puede analizar esta variable y luego tomar la acción apropiada basada en el contenido de la variable.




» » » » Cómo manejar errores de SQL con sqlstate