"Pragmatisch hüpf ich zum Fenster raus."

Hm, was meinst du damit?
Wenn du es wirklich dynamisch mit dynamsichen Parametern machen willst, so ist der Aufwand nicht unerheblich (habe ich auch schon gemacht, in COBOL ca. 2001):

Du bildest das SQL mit den "?" als Parametern.
Dazu nimmst du eine selber beschrieben SQLDA-Struktur, die ein Array zu den Parametern (SQLVAR) enthält.
Jedes Array-Element enthält den numerischen SQL-Typ, die Ausprägung (Größe [, Nachkomma]) sowie einen Pointer der auf den Inhalt verweist.

Nach dem "exec sql prepare ...." machst du nur noch den "execute sql execute ... using SQLDA ...".
Eigentlich ganz easy.

Übrigens: auch das Lesen lässt sich mit SQLDA ganz flexibel realisieren.

Da finde ich meine pragmatische Lösung einfacher und auf Grund der möglichen Optimierung durch die IBM i selber auch nicht zeitkritisch.