VON SCOTT KLEMENT
Der Trick ist, die Select-Anweisung innerhalb einer Values-Anweisung unterzubringen. Angenommen die folgende statische SQL-Abfrage soll, aus welchen Gründen auch immer, in eine dynamische umgewandelt werden:
exec SQL Select PERSNAME into :PersonalName from MITARBPF where PERSNR=:PersonalNr
In dem Programm werden zunächst folgende Variablen definiert:
D Tabelle s 21a inz(‘MITARBPF‘) D PersonalNr s 5p 0 inz(12345) D PersonalName s 25a D SQL_VALUES s 1000a varying
Da der Dateiname als Variable Tabelle definiert wurde, könnte dieser sogar vor der Ausführung der SQL Anweisungen geändert werden:
/free Tabelle = ‚MITARBPF2‘ SQL_VALUES = ‚values( select PERSNAME from ‚ + %trim( Tabelle ) + ‚ where PERSNR=? + ‚) into ?; exec SQL Prepare Stmt from :SQL_VALUES; exec SQL Execute Stmt using :PersonalNr,: PersonalName; /endfree
Beim Einsatz dynamischer SQL-Anweisungen sollten Sie sich vorher Gedanken über die Notwendigkeit und eventuelle Performance-Einbußen machen.
Scott Klement ist technischer Redakteur für NEWSolutions. Außerdem ist er IS Manager der Klement Sausage Co., Inc. Sie erreichen ihn unter iSN (ät) Scott-Klement.com.


