Das Problem ist ein anderes.
Oracle führt N[VAR]CHAR in UTF-8!
Allerdings liefert der Oracle-Treiber diese Felder wieder vom Typ String.

Zusätzlich kannst du natürlich im SQL keine AS/400-Funktionen angeben, da dieser SQL doch an Oracle geht und eigene Funktionen hat!

Also lass mal alle Casts weg, mach deinen "Select F1, F2, ...." und definiere deine Zielvariablen für Zeichenfelder einfach vom Typ C.
Zusätzlich solltest du für alle Felder auch NULL-Anzeiger vorhalten, denn NULL ist i.d.R. bei Oracle erlaubt.

Zu beachten ist auch der Typ Date in Oracle der immer vom Typ DateTime ist!
Diese Felder solltest du mittles TO_CHAR(Fx, 'Format') umwandeln.
Dann kannst du diese per %DATE, %TIME oder %TIMESTAMP wieder umwandeln.
https://docs.oracle.com/cd/B19306_01...nctions180.htm

Umgekehrt beim Insert/Update oder einer Where-Klausel gilt für DateTime dasselbe:
https://docs.oracle.com/cd/B19306_01...nctions183.htm