Das hat auch gar nichts mit der ODBC-Funktionalität zu tun sondern mit dem CCSID-Handling dass in allen Treibern (ODBC, JDBC, OLEDB und .NET) gelöst werden muss.

Wie sieht der Connection-String aus ?

Prüfe mal, wie die CCSID des Server-Job's des falsch laufenden Users steht.

Und was deine Lösung angeht, jedem halt das seine. SP's sind auf jeden Fall effektiver.
Ausserdem läßt sich jede SP als externe SP (also Programmaufruf) deklarieren und für jede Lib registrieren.

Man hat dann auch ggf. weniger Probleme mit den CCSID's, da du diese ja bei CWBX selber verwalten musst.