Si una función SELECT no devuelve ningún dato, o ningún dato adicional, este resultado se maneja como una situación normal y no se establece ningún código de error en SQLCODE, independientemente del valor de las propiedades Generar excepción en error de base de datos y Tratar los avisos como errores en el nodo actual.
Para reconocer que una función SELECT no ha devuelto datos, incluya ESQL que compruebe qué se ha devuelto. Puede utilizar varios métodos:
Este ESQL 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
...
Si espera una matriz en respuesta a una sentencia SELECT, puede utilizar CARDINALITY para calcular cuántas entradas se han recibido.
SET OutputRoot.XMLNS.Testcase.Results[] = (
SELECT T.MYCOL FROM Database.MYTABLE)
......
IF CARDINALITY (OutputRoot.XMLNS.Testcase.Results[])> 0 THEN
........
Si ha utilizado la palabra clave THE o ITEM en la función 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.
Distinga entre mayúsculas y minúsculas incluyendo COALESCE en la función SELECT, por ejemplo:
SET OutputRoot.XMLNS.Testcase.Results VALUE = THE (
SELECT ITEM COALESCE(T.MYCOL, 'WAS NULL')
FROM Database.MYTABLE);
Si este ejemplo 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.