Die Quellenart ist SQLRPGLE (oder bei RPGIII SQLRPG)

Ein SQL-Statement beginnt mit C/EXEC SQL
und endet mit C/END-EXEC.
Die dazwischenliegenden Zeilen beginnen mit C+

Embedded SQL kann im Free-Format-RPG nicht verwendet werden, d.h. die Free-Format-Codierung muss zunächst mit /END-FREE beendet werden.

Verwendete Variablen werden mit führendem Doppelpunkt (:MyFld) angegeben.

Für eine Einzel-Satz-Verarbeitung in RPG benötigst Du folgendes:
1. Declare Cursor für das SQL-Statement
(entspricht in etwa den F-Bestimmungen)
Der Cursorname ist frei wählbar und muss innerhalb der Quelle eindeutig sein.
2. Open Cursor
(entspricht in etwa Öffnen der Datei und Positionieren)
3. Fetch
(entspricht dem Read)
Die Ausgabe-Felder können entweder einzeln aufgelistet werden, oder als Datenstruktur angegeben werden.
4. Close
(Datei schliessen)

Um auf Datei-Ende bzw. Satz nicht gefunden abzufagen benutzt Du entweder:
1. SQLCOD = 100 oder
2. SQLSTT = '02000'

SQLCOD < 0 heisst Fehler. Die zugehörige Message-Id kannst Du aus der Message-File QSQLMSG entnehmen.
Die Message-Id ist 'SQL' + absolut-Wert des SQLCODs.
Variable Message-Texte findest Du in SQLERM.

Nun ein Beispiel:
PHP-Code:
C/EXEC SQL                                           
C
+ Declare SQLC1 Cursor For                         
CSelect a.Feld1,  a.Feld2,  b.Feld1b.Feld2               
C
From   MyFile1 a join MyFile2 b
C
+                on     a.KeyFld1 b.KeyFld1
C
+                   and a.KeyFld2 b.KeyFld2                                    
C
where      a.Feld1      = :MyVar1
C
*****  weitere Selektions-Kriterien                
C
order by   a.Feld1b.Feld2                   
C
+ For Read Only                
C
/END-EXEC         

C
/EXEC SQL            
C
+     open SQLC1    
C
/END-EXEC

C                   
Do        *HIVAL                                          
C
/EXEC SQL                                                                    
C
Fetch SQLC1 into :Feld1,  :Feld2,  :Feld3,  :Feld4                        
C
/END-EXEC                                                                    
 
 
Last Record                                            
C                   
If            SQLCOD  100      
C                   Leave                            
C                   
Endif        

 * 
Fehler
C                   
IF            SQLCOD  0        
C
******  Fehlerhandling       
C                   iter                             
C                   
Endif           
                 
CVerarbeitung
C                   enddo            

C
/EXEC SQL                   
C
+    close SQLC1           
C
/END-EXEC 
Weitere Informationen findest Du unter:
SQL Programming with Host Languages

Birgitta