Se un'istruzione SELECT non restituisce dati o non restituisce ulteriori dati, questa situazione viene considerata normale e non viene impostato alcun codice di errore in SQLCODE. Questo avviene indipendentemente dall'impostazione delle proprietà Genera eccezione in caso di errore del database e Valuta le avvertenze come errori nel nodo corrente.
Per riconoscere che un'istruzione SELECT non ha restituito dati, includere ESQL che controlli cosa è stato restituito. Questo si può fare in diversi modi:
Questa istruzione restituisce un valore booleano che indica se una funzione SELECT ha restituito uno o più valori (TRUE) oppure nessun valore (FALSE).
IF EXISTS(SELECT T.MYCOL FROM Database.MYTABLE) THEN ...
Se si prevede un array in risposta a un'istruzione SELECT, è possibile utilizzare CARDINALITY per calcolare quante voci siano state ricevute.
SET OutputRoot.XML.Testcase.Results[] = ( SELECT T.MYCOL FROM Database.MYTABLE) ...... IF CARDINALITY (OutputRoot.XML.Testcase.Results[]) > 0 THEN ........
Se sono state utilizzate le parole chiave THE o ITEM nell'istruzione SELECT, viene restituito un valore scalare. Se non è restituita alcuna riga, l'impostazione del valore è NULL. Tuttavia, è possibile che il valore NULL sia contenuto nella colonna e si potrebbe voler distinguere tra questi due casi.
Per fare ciò includere COALESCE nell'istruzione SELECT, ad esempio:
SET OutputRoot.XML.Testcase.Results VALUE = THE ( SELECT ITEM COALESCE(T.MYCOL, 'WAS NULL') FROM Database.MYTABLE);
Se questa istruzione restituisce una stringa di caratteri WAS NULL, questo indica che la colonna conteneva il valore NULL e che non sono state restituite righe.
Nei rilasci precedenti, nella maggior parte dei casi un SQLCODE era impostato su 100 se non venivano restituiti dati o ulteriori dati. Il broker generava un'eccezione se si era scelto di gestire gli errori di database nel flusso di messaggi.