Hallo,

es kann Unterschiede in der Berechtigung zwischen statischem und dynamischem SQL geben!
Gesteuert wird dies über die Optionen USRPRF (Programm-Ausführung und statisches SQL) und DYNUSRPRF (Dynamisches SQL) im Compile Command.

1. USRPRF:
*NAMING (Unterlassungs-Wert) das Benutzer-Profil wird durch die Namenskonventionen bestimmt.
Wird *SQL-Naming verwendet, wird das User Profile *OWNER verwendet, bei *SYS-Naming dagegen das Benutzer-Profile *USER
Alternativ können auch die Optionen *OWNER oder *USER gesetzt werden
--> Diese Berechtigungen gelten für das statische SQL

2. DYNUSRPRF
Diese Option steuert die Berechtigungen des Benutzer-Profiles für Dynamisches SQL. Der Unterlassungs-Wert ist *USER.
Alternativ kann auch *OWNER gesetzt werden.

Wenn Du also *SQL-Naming verwendest und die Unterlassungs-Werte nicht veränderst, kann es vorkommen, dass ein Programm mit statischem SQL ausgeführt werden kann (User Profile *OWNER), während zum Ausführen des dynamischen SQLs das Benutzer-Profil *USER verwendet wird.

Anstatt die Optionen im Compile-Befehl zu setzen, kannst Du natürlich ein entsprechendes SET-OPTION-Statement in Dein Programm einbinden.

Birgitta