Nun ja, ganz so hart würde ich das auch nicht sehen.
Nach jeder SQL-Operation ist es wichtig, den SQLCOD (ILE = SQLCODE) abzufragen:

SQLCOD < *zero => meist schwerer Fehler
SQLCOD = *ZERO => alles OK
SQLCOD > *zero => Warnhinweise (z.B. 100 = EOF)

Bei einem UPDAT in RPG musst du ja auch vorher per CHAIN/READ eine Satzsperre setzen und per Bezugszahl (ILE = %error) abfragen, warum nich also auch bei SQL ?

Bei SQL-Update/Delete wird noch in der Variablen SQLER3 die Anzahl betroffener Sätze gemeldet.
Ist diese = *zero, war ggf. der SQL zwar OK (SQLCOD = *zero), aber die Where-Klausel hat keinen Satz gefunden.