Hallo,

Wenn Dateien/Tabellen variabel gehandelt werden sollen gibt es zwei Möglichkeiten:

1. Statisches SQL verwenden und die benötigten Dateien mittels OVRDBF überschreiben. Die überschriebenen Dateien dann im SQL Statement verwenden.

2. Das SQL-Statement wird zu Laufzeit als String zusammengestellt und mit PREPARE in ein ausführbares SQL-Statement konvertiert.
Wenn Du mit einem SELECT-Statement arbeitest, muss Du einen Cursor verwenden.

Beispiel: (Es ist egal, ob die RPG-Statments im Free-Format oder nicht geschrieben sind. Die SQL-Statements könnten sogar in RPGIII-Code eingebunden werden!)

PHP-Code:
StringSQL 'Select * from ' LibFile +                           
            
' Where Feld1 = ''' MyVar1 ''' and Feld2 = ' MyVar2 +     
             
' For Read Only';
 /
End-Free
C
/Exec SQL Prepare PrepSQL from :StringSQL      
C
/End-Exec                                      

C
/Exec SQL Declare CsrC1 Cursor For PrepSQL  
C
/End-Exec                                             

C
/Exec SQL Open CsrC1         
C
/End-Exec                    
 
C                                  
Do     *HiVal
C
/Exec SQL  Fetch next from CsrC1 into :MyDS    
C
/End-Exec                                     
 
/Free
     
If SQLCod 100//Datei-Ende
        
Leave;
     Endif;
     If 
SQLCod < *Zeros//Fehler
        //Fehler-Handling
     
EndIf;
     
// Weitere Verarbeitung
   
EndDo;
 /
End-Free
C
/EXEC SQL Close CsrC1;
C/END-EXEC 
Sollten die Tabellen unterschieldlichen Aufbau haben, wird das Ganze um einiges komplizierter, d.h. es muss mit einer Descriptor-Area gearbeitet werden.

@Graue Eminenz
Select-Statements kannst Du nicht mit RUNSQLSTM verarbeiten, sondern nur Befehle wie Insert, Update, Delete aber auch Create Table u.a.

Birgitta