Comprobar las devoluciones de SELECT

Si una sentencia SELECT no devuelve datos o datos adicionales, esta situación se maneja de forma normal y no se establece ningún código de error en SQLCODE. Esto se produce independientemente del valor de las propiedades Generar excepción cuando se produce un error de la base de datos y Tratar los avisos como errores en el nodo actual.

Para reconocer que una sentencia SELECT no ha devuelto datos, incluya ESQL que compruebe qué se ha devuelto. Puede realizar esta tarea de varios modos:

  1. EXISTS

    Devuelve un valor booleano que indica si una función SELECT ha devuelto uno o más valores (TRUE) o ninguno (FALSE).

    IF EXISTS(SELECT T.MYCOL FROM Database.MYTABLE) THEN 
    ...
  2. CARDINALITY

    Si espera una matriz en respuesta a una sentencia SELECT, puede utilizar CARDINALITY para calcular cuántas entradas se han recibido.

    SET OutputRoot.XML.Testcase.Results[] = ( 
        SELECT T.MYCOL FROM Database.MYTABLE)
    ......
    IF CARDINALITY (OutputRoot.XML.Testcase.Results[]) > 0 THEN
    ........
  3. IS NULL

    Si ha utilizado la palabra clave THE o ITEM en la sentencia SELECT, se devuelve un valor escalar. Si no se han devuelto filas, el valor se establece en NULL. Sin embargo, es posible que el valor NULL esté contenido en la columna y es aconsejable distinguir estos dos casos.

    Para ello incluya COALESCE en la sentencia SELECT, por ejemplo:

    SET OutputRoot.XML.Testcase.Results VALUE = THE (
       SELECT ITEM COALESCE(T.MYCOL, 'WAS NULL')
       FROM Database.MYTABLE);

    Si se devuelve la serie de caracteres WAS NULL, esto indica que la columna contenía NULL y que no se ha devuelto ninguna fila.

En releases anteriores, se establecía un SQLCODE de 100 en la mayoría de los casos si no se devolvían datos o no se devolvían datos adicionales. El intermediario generaba una excepción si se elegía manejar los errores de base de datos del flujo de mensajes.

Conceptos relacionados
Visión general de flujos de mensajes
Estructura del árbol Lista de excepciones
Visión general de ESQL
Modelado de mensajes
Tareas relacionadas
Diseñar un flujo de mensajes
Definir el contenido del flujo de mensajes
Manejar errores en flujos de mensajes
Gestión de archivos ESQL
Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
Referencia de ESQL
Sentencia SET
Operadores simples de comparación ESQL
Función CARDINALITY
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac17020_