NOT FOUND in SQLSTATE

When a SELECT or FETCH statement encounters NOT FOUND (or END OF DATA), the database server sets SQLSTATE to "02000" (class = "02"). The following table lists the conditions that cause SQL statements to yield NOT FOUND.
Table 1. SQLSTATE values that are set when SQL statements do not return any rows
SQL statement that generates the indicated SQLSTATE result Result for ANSI-compliant database Result for non-ANSI-compliant database
FETCH statement: the last qualifying row has already been returned (the end of data was reached). "02000" "02000"
SELECT statement: no rows match the SELECT criteria. "02000" "02000"
DELETE and DELETE...WHERE statement (not part of multistatement PREPARE): no rows match the DELETE criteria. "02000" "00000"
INSERT INTO tablename SELECT statement (not part of multistatement PREPARE): no rows match the SELECT criteria. "02000" "00000"
SELECT... INTO TEMP statement (not part of multistatement PREPARE): no rows match the SELECT criteria. "02000" "00000"
UPDATE and UPDATE...WHERE statement (not part of multistatement PREPARE): no rows match the UPDATE criteria. "02000" "00000"

SQLSTATE values that are set when SQL statements do not return any rows shows that the value that the NOT FOUND condition generates depends, in some cases, on whether the database is ANSI compliant.

To check for the NOT FOUND condition, your code needs to verify only the class code of SQLSTATE. The subclass code is always "000". The getdiag sample program in Guide to the getdiag.ec file uses the sqlstate_err() function to perform exception handling. To check for a warning in an SQL statement, sqlstate_err() compares the first two characters of SQLSTATE with the string "02".