Hallo,

der SQLCOD/SQLCODE oder der SQLSTT/SQLSTATE sollte nach jedem SQL-Statement geprüft werden. (Das hatte ich der Einfachheit halber in meinem Beispiel weggelassen)
Gerade bei dynamischem SQL kann es leicht passieren, das die Syntax nicht stimmt. Dann würde schon das Prepare-Statement scheitern.

Was welcher SQL-Code bedeutet kann relativ einfach ermittelt werden:
Alle SQL-Nachrichten sind in der Nachrichten-Datei QSQLMSG hinterlegt. Die Message-Id setzt sich zusammen aus SQL + Absolut-Wert des SQL-Codes, z.B. -204 --> SQL0204.

Für weitere Informationen würde ich Dir empfehlen doch mal die Online-Bibliothek zu konsultieren.
In den folgenden Redbooks findest Du einiges an Beispiel-Codes und auch relativ einfache und gute Erklärungen zu dem Thema Embedded SQL.
Who Knew You Could Do That with RPG IV? A Sorcerer's Guide to System Access and More

Modernizing IBM eServer iSeries Application Data Access - A Roadmap Cornerstone

Ansonsten findest Du noch Beispiele in:
Embedded SQL Programming

Noch eine allgemein Anmerkung:
Host-Variablen sollten niemals mit SQL, SQ, RDI oder DSN beginnen. Diese Variablen sind für den Datenbanken-Manager reserviert. Selbst wenn heute noch keine Probleme auftreten, kann in einem zukünftigen Release IBM eine Variable mit einem Namen, der bereits als Hostvariable definiert wurde, verwenden. Im besten Fall stürzt das Programm ab. Im schlimmsten Fall werden wichtige Werte überschrieben und kein Mensch kann sich erklären was passiert ist.

Birgitta