View Full Version : OPNQRYF im RPG-Programm durch SQL ersetzen
dschroeder
28-03-14, 14:37
Nochmals danke für die Tipps.
Dieter
Aber OPNQRYF verwendet die klassische SQL Engine ...
Anscheinend nicht mehr ab V7R2, wenn ich dieses Dokument (http://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=%2Fcommon%2Fssi%2Frep_ca%2F0%2F 649%2FENUSA14-0290%2Findex.html&lang=en&request_locale=en) richtig verstehen:
"Improved SQL Query Engine (SQE) capabilities. The progression of expanding the interfaces supported by SQE continues with IBM i 7.2. By default, SQE will be used to implement Native DB queries, including those made via traditional interfaces Open Query File (OPNQRYF) and Query/400. Just by moving to IBM i 7.2, these Native DB queries will be easier to observe and manage through the extensive database tooling found in the IBM i Navigator OnDemand Performance Center . Heavy Native DB queries could reap a performance benefit from an implementation through a far more advanced query engine."
Im IBM i Memorandum für Benutzer Version 7.2 (http://www-01.ibm.com/support/knowledgecenter/api/content/ssw_ibm_i_72/rzaq9/rzaq9.pdf) steht natürlich auch etwas darüber drin.
Wenn ich dann so an meine Probleme mit der SQE in V7R1 denke kann ich nur hoffen, dass durch das quasi Abschaffen der CQE plötzlich Query/400 und OPNQRYF schlechter oder gar nicht mehr laufen.
Schlechter wäre noch zu verkraften, aber gar nicht würde die Katastrophe bedeuten!
Beispiel:
In der CQE wird eine Where-Klausel vor cast's durchgeführt.
Ich kann also ungültige Daten ausfiltern bevor der Cast auf Fehler läuft.
In der SQE klappt das aber nicht immer.
Leider meint hier der Pessimizer, dass manchmal der Cast vor dem Where ausgeführt werden sollte.
In genau diesem Fall funktioniert der SQL nicht mehr.
Query/400 betrifft das meist nicht, aber im OPNQRYF kann ich ja Feldtypen anpassen (MAPFLD) und numerische Operationen definieren.
Abschaffen der CQE plötzlich Query/400 und OPNQRYF schlechter oder gar nicht mehr laufen.
Schlechter wäre noch zu verkraften, aber gar nicht würde die Katastrophe bedeuten!
In der Abfrage-Options-Datei QAQQINI gibt es eine neue Option SQE_NATIVE_ACCESS. Setzt man deren Wert von *YES auf *NO wird versucht Query/400-Queries, OPNQRYF etc. zunächst mit der CQE verarbeiten und erst dann, wenn dies nicht möglich ist (z.B. weil die neuen Berechtigungen verwendet werden) erfolgt die Verarbeitung mit der SQE.
Birgitta