... Anmerkung zu dem select *:
bei statischem SQL wird der zur Compiletime aufgelöst, da passiert also bei Dateiänderung nix!!!
bei dynamischem SQL wird der * zur prepare time aufgelöst und passt dann nicht mehr zur Feldliste, auch nicht bei externen Datenstrukturen, da letztere zur Compiletime aufgelöst werden.

Anmerkung zum View Layer: genau deswegen greift man grundsätzlich über ein View Layer zu. Damit entkoppelt man Datenbank und Anwendung. Bei Änderung an der Datenbank, hält man das View Layer konstant - bei zusätzlichen Feldern kommen dann neue Views hinzu - die bisherigen liefern dieselben Felder wie vorher!!! Wird eine View nicht mehr benötigt (weil sie durch eine erweiterte abgelöst ist), kann man sie löschen. Probleme, wie vorher geschildert, hat man bei dieser Vorgehensweise grundsätzlich nicht!

Anmerkung zum Fetch in externe Datenstrukturen mit select Feldliste: das Verfahren ist Fehler trächtig und außerdem ist die Lesbarkeit mies.

D*B


Zitat Zitat von B.Hauser Beitrag anzeigen
Du kannst im Fetch auch mehrere Datenstrukturen und Einzel-Felder angeben:

Code:
D MyExtDS1      E DS                  ExtName(MyFile1)       
D MyExtDS2      E DS                  ExtName(MyFile2)       

 /Free
   Exec SQL 
      Declare MyCsr Cursor For
         Select *
            From MyFile1 join MyFile2 on .... ;

   Exec SQL Open MyCsr;
    .....
   Exec SQL Fetch Next From MyCsr 
                  into :MyExtDS1, :MyExtDS2;
Mit verschachtelten qualifizierten Datenstrukturen mit LIKEDS wirst Du kein Glück haben, da der SQL Precompiler nur eine Stufe verarbeiten kann.

Ich würde allerdings immer nur die Spalten, die benötigt werden selektieren und nicht gnadenlos alles. Zum einen werden bei SELECT * meist jede Menge unnötige Daten transportiert, wodurch wesentlich mehr logische Datenbankzugriffe erfolgen müssen und zum zweiten muss bei Dateierweiterung das Programm angefasst, zumindest jedoch erneut compiliert werden.

Birgitta