Das Problem sind nicht die Packages. Ich habe mir zwar angewöhnt, die Packages in die QTEMP zu legen damit es keine Probleme beim Zugriff von mehreren Usern gibt, Performance-Unterschiede habe ich aber nicht bemerkt.

Wichtig für SQL ist das Bilden der SQL's mit Parametermarkern, d.h., die SQL's dürfen nicht immer neu aufgebaut werden wenn sich der Wert einer Variablen ändert.

Z.B.:

select f1, f2, f3, ...
from myfile
where k1=? and k2=? ...

anstelle jedes mal die Abfrage mit dem Wert für "K1, ..." neu aufzubereiten.

Nur dann kann SQL die Datenpfade geöffnet halten (ODP).

Z.B.:
insert into myfile fields(f1, f2, f3, ...)
values (?, ?, ?, ...)

Auch hier wird der ODP dann für den nächsten Insert aufgelassen.


Vielleicht sollte man auch mal prüfen, ob die ODBC-Verbindung während einer Sitzung geöffnet bleibt, so dass ODP's auch bestehen bleiben.


Anmerkung:

SQLPKG's über ODBC werden beim Aufbauen der Verbindung erstellt. Jeder SQL-Befehl wird per "Prepare" an die AS/400 gesendet. Wenn sich der Befehl ändert, wird auch ein neuer Prepare erforderlich !!!

Frage:

Sind die SQL's auch wirklich mit Parametermarkern, so dass SQLPKG's überhaupt Wirkung haben können ?