Cómo manejar excepciones sql
Al tratar de determinar el origen de un error de SQL y SQLSTATE indica una condición de excepción mediante la celebración de un valor distinto 00000, 00001, o 00002, es posible que desee manejar la situación en una de las siguientes maneras:
Control para el procedimiento principal que llama el subprocedimiento que levantó la excepción Retorno.
Usar una SIEMPRE cláusula en rama a una rutina de control de excepciones o realizar alguna otra acción.
Manejar la excepción en el lugar con un compuesto Sentencia SQL. Una sentencia de SQL compuesto formado por una o más sentencias SQL simples, intercaladas entre COMENZAR y FIN palabras clave.
El siguiente es un ejemplo de un manejador de excepción compuesto declaración:
BEGINDECLARE ValueOutOfRange EXCEPCIÓN PARA SQLSTATE'73003 '-Insertar en los alimentos (calorías) VALUES (: cal) -signal ValueOutOfRange -Mensaje' Proceso de un nuevo calorías value.'EXCEPTIONWHEN ValueOutOfRange THENMESSAGE 'Manejo del error rango de calorías' -cuando OTROS THENRESIGNAL -END
Con uno o más DECLARAR declaraciones, le puede dar nombres a específica SQLSTATE valores que se sospecha pueden surgir. los INSERT declaración es la que podría provocar una excepción que se produzca. Si el valor de : cal supera el valor máximo de un SMALLINT elemento de datos, SQLSTATE está ajustado a " 73003 ". los SEÑAL declaración señala una condición de excepción. Se despeja el área de diagnóstico superior.
Se establece el RETURNED_SQLSTATE Campo de la área de diagnóstico a la SQLSTATE para la excepción nombrada. Si se ha producido no es la excepción, la serie de declaraciones representado por el MENSAJE 'Proceso de un nuevo valor en calorías' se ejecuta comunicado. Sin embargo, si se ha producido una excepción, se salta esa serie de declaraciones y el EXCEPCIÓN se ejecuta comunicado.
Si la excepción era una ValueOutOfRange excepción, a continuación, una serie de estados representados por la MENSAJE 'Manejo del error rango de calorías' se ejecuta comunicado. los RESIGNAL sentencia se ejecuta si la excepción no es un ValueOutOfRange excepción.
RESIGNAL simplemente pasa el control de la ejecución del procedimiento de padres llamando. Este procedimiento puede tener código de error de manejo adicional para hacer frente a más excepciones que el error esperado de valor fuera de rango.