@ Fuerchau
Solange immer die gleiche Anzahl Felder, in der gleichen Reihenfolge mit dem gleichen Format ausgegeben werden müssen, ist auch beim dynamischen SQL keine SQLDA erforderlich.

@haertl
Soweit ich das aus dem obigen Beispiel ersehen kann, möchtest Du einen einzigen Wert zurück erhalten.
In diesem Fall würde ich auch kein dynamisches sondern ein statisches SQL verwenden.
Eine Möglichkeit hierzu hat Kollege Rincewind bereits angegeben.
Die zweite Möglichkeit wäre ein Set-Befehl:
Code:
C/EXEC SQL
C+ Set :HSUM = Select Sum(VB)
C+                   from LOHKOSP 
C+                   where VABHI = 4 AND VWERK = :##WRK 
C+                       AND VABJJ = :##JR 
C+                       AND VABMM BETWEEN 01 AND :##MM C+                       AND VEURO = 1 
C+                       AND VBKST IN ( 145210, 145221, 145224, 145181 '222, 145223) 
C+                       AND VKONT IN ( 60100, 60110, 60150, 60180, 61000)'
C/End-Exec
Ist wirklich ein dynamisches SQL erforderlich, müssen die Host-Variablen entweder im String aufgelöst werden ( + MyVar), oder mit Platzhaltern (?) und Using gearbeitet werden.
Der Unterschied zwischen beiden Methoden liegt darin, dass im ersten Fall der Command bei jedem Aufruf neu konvertiert werden muss (was bei EXECUTE IMMEDIATE sowieso der Fall ist), während bei der zweiten Methode der Sting nur einmal konvertiert wird und nur die Werte der Host-Variablen ausgetauscht werden.

Um einen Select-Befehl im dynamischen SQL verarbeiten zu können, muss zunächst der Command durch eine PREPARE-Anweisung in einen SQL-String konvertiert werden. Dann muss ein Cursor für diesen SQL-String deklariert werden. Anschliessend kann der Cursor geöffnet werden (OPEN), der Satz eingelesen (FETCH) und der Cursor wieder geschlossen werden (CLOSE).

Bisher habe ich schon jede Menge SQLRPG-Programme geschrieben, dynamisches SQL musste ich jedoch nur in einigen ganz wenigen Fällen verwenden, da selbst unterschiedliche Sortierungen im statischen SQL gehandelt werden können.

@Dieter
Ich fand das SQL-Handling in JAVA, bzw. das was ich bisher davon gesehen habe, auch nicht unbedingt einfacher!

Birgitta