... es ist schon klar, dass SELECT * intern aufgelöst wird!

Das Problem, auf das Kit hinweisen möchte, tritt beim Fetch oder beim Select into auf!

Werden die Daten in eine (externe) Datenstruktur basierend auf der Datei oder View ausgegeben, muss bei einer Änderung (der Tabelle oder View), bei der Felder/Spalten hinzugefügt, gelöscht oder verändert werden, das Programm neu kompiliert werden, damit in RPG der Datei-Aufbau erneut korrekt übernommen wird.

Wird in einer Tabelle oder View lediglich ein Feld am Ende hinzugefügt ist bei LVLCHK(*NO) eine erneute Kompilierung nicht notwendig.

Ein SELECT * sollte jedoch bei der Arbeit im (embedded) SQL soweit möglich vermieden werden.
Hierfür gibt es zwei Gründe:
  1. Der erste wurde gerade lange und breit diskutiert, d.h. werden Felder/Spalten direkt ausgewählt, ist bei Datei-Erweiterung eine Kompilierung der Programme nicht erforderlich.
  2. Der zweite Grund ist Performance. Im Gegensatz zu RPG bei dem immer der ganze Satz gelesen werden muss, werden bei SQL nur die Daten, die auch angefordert werden zurückgegeben. Werden die gewünschten Daten eingeschränkt, sind weniger Zugriffe auf die Datenbank erforderlich und müssen weniger Daten in den Speicher geladen werden.


Birgitta