Comprobación de las devoluciones de SELECT

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

Para reconocer que una sentencia SELECT no ha devuelto ningún dato, incluya ESQL para que compruebe lo que se ha devuelto. Puede hacerlo de varias formas:

  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 como respuesta a SELECT, puede utilizar CARDINALITY para calcular el número de entradas recibidas.

    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 las palabras clave THE o ITEM en la sentencia SELECT, se devuelve un valor de escala. Si no se devuelven filas, el valor establecido es NULL. No obstante, es posible que el valor NULL esté contenido en la columna y que desee diferenciar estos dos casos.

    Para hacerlo, 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 devuelve la serie de caracteres WAS NULL, esto indica que la columna contenía NULL y que no se han devuelto filas.

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

Conceptos relacionados
Flujos de mensajes
Árbol ExceptionList
ESQL
Diseño de mensajes

Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Manejo de errores en flujos de mensajes
Gestión de archivos ESQL

Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Sentencia SET
Operadores de comparación ESQL
Función CARDINALITY