-
Externe Datenstrukturen verketten
Hallo zusammen,
ich habe eine Frage bezüglich externer Datenstukturen. Ist es möglich zwei externe Datenstrukturen zu verketten?
Bsp.:
D SQLDS e ds EXTNAME(DAT)
D SQLDS e ds EXTNAME(DAT2) ???
Dies geht natürlich nicht, da es zweimal den gleichen Datenstukturnamen gibt.
Gibt es eine Möglichkeit, ohne dass ich sämliche Felder der Dateien einzeln in einer Datenstruktur zusammenfassen muss??
Danke im voraus
-
... SQLDS ist als Name keine gute Idee, da kann der Precompiler von embedded SQL den Husten kriegen (was selbst nach einem Release Wechsel mit vorher funktionierenden Programmen passieren kann). Ansonsten geht da (leider) fas alles mit like und likeds, soweit die Feldnamen alle eindeutig (mit oder ohne qualified) bleiben. Man muss dabei im Auge behalten, dass Datenstrukturen Speicherbeschreibung sind (mich schüttelts schon wieder)...
D*B
 Zitat von AS400SD
Hallo zusammen,
ich habe eine Frage bezüglich externer Datenstukturen. Ist es möglich zwei externe Datenstrukturen zu verketten?
Bsp.:
D SQLDS e ds EXTNAME(DAT)
D SQLDS e ds EXTNAME(DAT2) ???
Dies geht natürlich nicht, da es zweimal den gleichen Datenstukturnamen gibt.
Gibt es eine Möglichkeit, ohne dass ich sämliche Felder der Dateien einzeln in einer Datenstruktur zusammenfassen muss??
Danke im voraus
-
Ok, ich habe mich da falsch ausgedrückt:
Ich benötige zur Anzeige in einem Bildschirmformat zwei Dateien. Normalerweise macht man ein select mit den dementsprechenden Feldern der Dateien und muss diese dann in Datenstrukturen zusammenfassen. Ich wollte mir das ersparen und wollte nun wissen ob man zwei externe Datein unter einer Datenstruktur zusammenfassen kann z.B. mit dem EXTNAME(....).
-
... create view as select ...
D*B
 Zitat von AS400SD
Ok, ich habe mich da falsch ausgedrückt:
Ich benötige zur Anzeige in einem Bildschirmformat zwei Dateien. Normalerweise macht man ein select mit den dementsprechenden Feldern der Dateien und muss diese dann in Datenstrukturen zusammenfassen. Ich wollte mir das ersparen und wollte nun wissen ob man zwei externe Datein unter einer Datenstruktur zusammenfassen kann z.B. mit dem EXTNAME(....). 
-
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
-
... 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 von B.Hauser
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
Similar Threads
-
By Jump4738 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 06-10-06, 15:08
-
By GraueEminenz in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 18-07-06, 09:05
-
By scriptingmike in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 07-06-06, 08:29
-
By sargejogi in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 14-09-04, 12:22
-
By Klaus Rotering in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 26-01-01, 08:58
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks