WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Función SQLSTATE

SQLSTATE es una función de estado de base de datos que devuelve un tipo de datos CHARACTER de cinco caracteres con un valor predeterminado de '00000' (cinco ceros como una serie de caracteres).

Sintaxis

Leer el esquema de sintaxisOmitir el esquema de sintaxis visual
>>-SQLSTATE----------------------------------------------------><

En un flujo de mensajes, puede acceder y actualizar un recurso de base de datos externo utilizando las funciones de base de datos ESQL disponibles en los nodos Compute, Database y Filter. Cuando realiza llamadas a una base de datos externa, es posible que obtenga errores como, por ejemplo, que no existe una tabla que una base de datos no está disponible o que ya existe una inserción para una clave.

Cuando se producen estos errores, por omisión, el intermediario genera una excepción. Este comportamiento lo determina el valor que haya establecido para la propiedad Generar excepción en error de la base de datos. Si se selecciona esta propiedad, el intermediario detiene el proceso del nodo, propaga el mensaje al terminal de anomalías del nodo y escribe los detalles del error en ExceptionList. Si desea alterar temporalmente el comportamiento predeterminado y manejar un error de base de datos en el ESQL del nodo, borre el recuadro de selección Generar excepción en error de la base de datos. El intermediario no genera una excepción y debe incluir la sentencia THROW de modo que genere una excepción si no se espera un código de estado SQL determinado. Consulte Sentencia THROW para obtener una descripción de THROW.

Para gestionar los errores de base de datos en un nodo, puede utilizar el SQLSTATE de función de estado de base de datos para recibir información acerca del estado de la llamada DBMS realizada en ESQL. Puede incluirla en sentencias condicionales del ESQL del nodo actual para reconocer y manejar errores posibles.

estados SQL

En ESQL, los estados SQL son series de caracteres de longitud variable. Por convención, tienen seis caracteres de longitud y sólo contienen los caracteres 0-9, A-Z. El significado de los seis caracteres es:
Carácter 1
El origen de la excepción
Caracteres 2 - 3
La clase de la excepción
Caracteres 4 - 6
La subclase de la excepción

El estado SQL de una excepción lo determina un proceso de dos fases. En la primera fase, se examina la información de la excepción y las excepciones de derivación (es decir, la información que indica lo que estaba haciendo el intermediario en el momento de la excepción) se ignoran hasta que se localiza la excepción que describe el error original.

La segunda fase es la siguiente:
  1. Si la excepción seleccionada es una excepción de base de datos, el estado SQL es el proporcionado por la base de datos, pero con el prefijo de la letra "D" para evitar confusiones con las excepciones que se originan en el intermediario. El código SQL, el error nativo y el texto de error son los que proporciona la base de datos.
  2. Si la excepción seleccionada es una excepción de usuario (es decir, se ha originado en una sentencia THROW), el código SQL, el estado, el error nativo y el texto de error se toman de las primeras cuatro inserciones de la excepción, en orden. El valor del estado resultante se toma tal cual (sin el prefijo de una letra como la "U"). El intermediario no utiliza la letra "U" como indicador de origen. Si desea definir un estado SQL exclusivo en lugar de imitar uno ya existente, utilice estados SQL que empiecen con la letra "U". Si utiliza estados SQL que empiecen con la letra "U" puede escribir un manejador de errores que coincida con todas las excepciones definidas por el usuario y generadas con un operador LIKE’U%’.
  3. Si la excepción seleccionada se ha originado en el transporte del mensaje o en la implementación ESQL misma, el código SQL, el estado, el error nativo y el texto de error son como se describe en la lista más adelante en esta sección.
  4. Para todas las demás excepciones, el estado SQL es '', que indica que no hay origen, ni clase, ni subclase.

Algunas excepciones que actualmente dan un estado SQL vacío es posible que den estados individuales en releases futuros. Si desea detectar excepciones no clasificadas, utilice "todos" los comodines ("%") para el estado SQL, en el último manejador de un ámbito. Este comodín continuará detectando el mismo conjunto de excepciones si a las excepciones no clasificadas anteriormente se les da nuevos estados SQL exclusivos.

Están definidos los siguientes estados SQL:

Dddddd
ddddd es el estado devuelto por la base de datos.
SqlState = 'S22003'
Desbordamiento aritmético. Una operación cuyo resultado es de tipo numérico, ha originado un valor que sobrepasa el rango soportado.
SqlState = 'S22007'
El formato de fecha y hora no es válido. Una serie de caracteres utilizada en una transformación CAST de tipo de caracteres a fecha y hora tenía el formato básico incorrecto (por ejemplo, '01947-10-24') o tenía valores fuera de los rangos permitidos por el calendario gregoriano (por ejemplo, '1947-21-24').
SqlState = 'S22008'
Desbordamiento de campo de fecha y hora. Una operación cuyo resultado es de tipo fecha y hora, ha originado un valor que sobrepasa el rango soportado.
SqlState = 'S22012'
División por cero. Una operación de división cuyo tipo de datos de resultado no contiene el concepto de infinito, tiene un cero como operando de la derecha.
SqlState = 'S22015'
Desbordamiento de campo de intervalo. Una operación cuyo resultado es del tipo INTERVAL, ha originado un valor que sobrepasa el rango soportado por este tipo de datos.
SqlState = 'S22018'
El valor del carácter de conversión no es válido.
SqlState = 'SFN001'
Una función SELECT utilizada en un predicado IN ha devuelto más de una columna cuando solamente se permite una columna en este caso.
SqlState = 'SPS001'
El terminal de destino no es válido. Una sentencia PROPAGATE a terminal ha intentado utilizar un nombre de terminal que no es válido.
SqlState = 'SPS002'
La etiqueta de destino no es válida. Una sentencia PROPAGATE a etiqueta ha intentado utilizar un nombre de etiqueta que no es válida.
SqlState = 'SPS003'
La sentencia PROPAGATE no es válida en este contexto. Utilice en su lugar la función RETURN.
SqlState = 'MQW001', SqlNativeError = 0
La corriente de bits no satisface los requisitos para los mensajes de WebSphere MQ. No se ha intentado colocarlo en una cola. Volver a intentarlo y utilizar la administración de colas no resuelve este problema.
SqlState = 'MQW002', SqlNativeError = 0
Los nombres de la cola de destino o del gestor de colas no eran válidos (es decir, no se han podido convertir de Unicode a la página de códigos del gestor de colas). Volver a intentarlo y vaciar la cola no resuelve este problema.
SqlState = 'MQW003', SqlNativeError = 0
Se ha especificado la modalidad de solicitud pero los nombres del gestor de colas o de la cola "de respuestas" no eran válidos (esto es, no se han podido convertir de Unicode a la página de códigos del mensaje). Volver a intentarlo y vaciar la cola no resuelve este problema.
SqlState = 'MQW004', SqlNativeError = 0
Se ha especificado la modalidad de respuesta pero los nombres del gestor de colas o de la cola tomados del mensaje no eran válidos (es decir, no se han podido convertir de la página de códigos dada a Unicode). Volver a intentarlo y vaciar la cola no resuelve este problema.
SqlState = 'MQW005', SqlNativeError = 0
Se ha especificado la modalidad de lista de destinos pero la lista de destinos proporcionada no satisface los requisitos básicos para las listas de destinos. No se ha intentado colocar ningún mensaje en una cola. Volver a intentarlo y utilizar la administración de colas no resuelve este problema.
SqlState = 'MQW101', SqlNativeError = devuelto por WebSphere MQ
No se ha podido abrir la cola o el gestor de colas de destino. La administración de cola puede resolver este problema, pero los reintentos no.
SqlState = 'MQW102', SqlNativeError = devuelto por WebSphere MQ
No se ha podido grabar en la cola o el gestor de colas de destino. Volver a intentarlo y utilizar la administración de colas puede resolver este problema.
SqlState = 'MQW201', SqlNativeError = número de destinos con un error
Se ha producido más de un error mientras se procesaba una lista de destinos. Es posible que el mensaje se haya puesto en cero o más colas. Volver a intentarlo y utilizar la administración de colas puede resolver este problema.
Cualquier elemento que el usuario haya utilizado en una sentencia THROW
Utilice Uuuuuuu para las excepciones de usuario, a menos que se imite una de las excepciones definidas más arriba.
Serie de caracteres vacía
Todos los demás errores.
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 17:00:01


Tema de referenciaTema de referencia | Versión 8.0.0.5 | ak17990_