Du machst das einfach mit dynamischem SQL, d.h. du bildest zur Laufzeit einen String mit dem kompletten SQL Statement und dann führst Du es mit EXECUTE IMMEDIATE aus.
Etwa so:
Noch ein paar kleine Anmerkungen.Code:Create Or Replace Procedure LIB.TEST (In PARLIB Char(10) Default (''), In PARFILE Char(10), In PARFELDA Char(6) Default (' '), In PARFELDB Char(30) Default (' ')) Language SQL Deterministic P1: Begin Declare CmdSQL VarChar(1096) Not NULL Default ''; Set CmdSQL = 'Update ' concat Trim(ParLib) concat '/' concat Trim(ParFile) concat ' set ' concat Trim(ParFeldB) Concat ' = (Select FeldC From File_Z Where FeldD = ''' concat ParFeldA Concat ''')'; Execute Immediate CmdSQL; End P1;
1. Du solltest NIE Sonderzeichen in Deinem Source Code verwenden, da diese nicht immer international sind und dann auf anderen Maschinen Probleme bereiten können. Gerade das Paragraphen-Zeichen kann in der US-amerikanischen Umgebung nicht verwendet werden. In deren Zeichensatz steht an dieser stelle das @-Zeichen.
2. Du solltest eine Fehler-Prüfung einbauen.
Entweder über einen Handler oder zumindest über GET DIAGNOSTICS den SQLCODE (DB2_RETURNED_SQLCODE), SQLSTATUS (RETURNED_SQLSTATE)oder die Fehlermeldung (MESSAGE_TEXT) ermitteln.
Birgitta
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks