SQL-Tabellendaten abrufen
Mit EGL können SQL-Datensatzfelder anhand der Definition einer SQL-Tabelle oder einer entsprechenden Ansicht oder Verknüpfung erstellt werden.
- Stellen Sie sicher, dass die SQL-Vorgaben entsprechend gesetzt sind. Details hierzu finden Sie in Benutzervorgaben für SQL-Abrufe definieren.
- Definieren Sie die Standarddatenbankverbindung; diese Verbindung wird von EGL zum Abrufen der Tabellendaten verwendet:
- Klicken Sie auf .
- Erweitern Sie EGL und klicken Sie auf SQL-Datenbankverbindungen.
- Wählen Sie die Datenbankverbindung aus der Liste Verbindung aus oder erstellen Sie eine neue Datenbankverbindung. Die in der Liste Verbindung ausgewählte Verbindung ist die Standarddatenbankverbindung.
- Entscheiden Sie, wo Sie die Task ausführen möchten:
- In einer EGL-Quellendatei beim Entwickeln der einzelnen SQL-Datensätze.
- In der Ansicht 'Ausrichtung'. Dies kann einfacher sein, wenn bereits SQL-Datensätze vorliegen.
- Wenn Sie mit der EGL-Quellendatei arbeiten, gehen Sie in dieser Weise vor.
Wenn Sie mit der Ansicht 'Ausrichtung' arbeiten, können Sie den nächsten Schritt überspringen.
- Falls noch kein SQL-Datensatz vorhanden ist, erstellen Sie ihn wie folgt:
- Geben Sie R ein, drücken Sie Strg+Leerzeichen und wählen Sie in der Content-Assist-Liste einen der SQL-Tabelleneinträge aus (normalerweise SQL-Datensatz mit Tabellennamen).
- Geben Sie den Namen des SQL-Datensatzes ein, drücken Sie die Tabulatortaste und geben Sie dann einen Tabellennamen, eine durch Kommas begrenzte Liste mit Tabellen oder den Aliasnamen einer Ansicht ein.
Sie können auch einen SQL-Datensatz erstellen, indem Sie den Mindestinhalt eingeben. Dies ist möglich, wenn der Name des Datensatzes wie im folgenden Beispiel mit dem Namen der Tabelle übereinstimmt:Record myTable type sqlRecord end - Bewegen Sie den Cursor auf den Datensatz und drücken Sie die rechte Maustaste.
- Klicken Sie im Menü auf .
- Falls noch kein SQL-Datensatz vorhanden ist, erstellen Sie ihn wie folgt:
- Wenn Sie in der Ansicht 'Ausrichtung' arbeiten, klicken Sie mit der rechten Maustaste auf den Eintrag für den SQL-Datensatz und klicken Sie im Popup-Menü auf SQL abrufen.
- Öffnen Sie den Datensatz im EGL-Editor und öffnen Sie dann die Ansicht 'Ausrichtung'. Dort finden Sie eine hierarchische Ansicht der Abschnitte und anderem EGL-Code auf der Seite.
- Klicken Sie in der Ansicht 'Ausrichtung' mit der rechten Maustaste auf das Feld und klicken Sie dann auf Datenelementabschnitt erstellen (DataItem). Daraufhin erstellt EGL einen DataItem-Abschnitt basierend auf dem Feld im Datensatz und verwendet dieses Datenelement als Feldtyp.
Kompatibilität von SQL-Datentypen und EGL-Primitive-Typen
- Die SQL-Spalte besteht aus beliebigen Zeichendaten und die EGL-Hostvariable ist vom Typ CHAR mit einer Länge kleiner-gleich der Länge der SQL-Spalte.
- Die SQL-Spalte besteht aus beliebigen DBCHAR-Daten und die EGL-Hostvariable ist vom Typ DBCHAR mit einer Länge kleiner-gleich der Länge der SQL-Spalte.
- Die SQL-Spalte besteht aus beliebigen Zahlen und die EGL-Hostvariable ist eine
der folgenden Typen:
- BIN(4,0)/SMALLINT
- BIN(9,0)/INT
- BIN(18,0)/BIGINT
- DECIMAL mit einer maximalen Länge von 18 Ziffern einschließlich Dezimalstellen. Die Anzahl der Ziffern für eine DECIMAL-Variable sollte für die EGL-Hostvariable und die Spalte identisch sein.
- Die SQL-Spalte hat einen beliebigen Datentyp, die EGL-Hostvariable ist vom Typ HEX
und die Spalte und die Hostvariable enthalten dieselbe Anzahl Byte. Bei der Datenübertragung findet
keine Datenkonvertierung statt.
EGL-Hostvariablen des Typs HEX unterstützen den Zugriff auf alle SQL-Spalten eines Datentyps, der keinem EGL-Basiselementtyp entspricht.
Werden Zeichendaten einer SQL-Tabellenspalte in eine kürzere Hostvariable eingelesen, wird der Inhalt rechts abgeschnitten. Mit dem reservierten Wort trunc in einer EGL-Anweisung if können Sie testen, ob eine Abschneidung vorgenommen wurde.
Standardzuordnung
EGL verwendet bei der Erstellung von Datensätzen mit der SQL-Funktion RETRIEVE eine Standardzuordnung. In der folgenden Tabelle ist die Standardzuordnung aufgeführt.
| SQL-Datentyp | Merkmale von EGL-Variablen | ||
|---|---|---|---|
| Basiselementtyp | Stellen/Zeichen | Anzahl Byte | |
| BIGINT | BIGINT | Nicht vorhanden | 8 |
| BIT | SMALLINT | Nicht vorhanden | 2 |
| BLOB | BLOB | Nicht vorhanden | Nicht vorhanden |
| BOOLEAN | BOOLEAN | Nicht vorhanden | 1 |
| CHAR | CHAR | 1 - 32767 | 1 - 32767 |
| CLOB | CLOB | Nicht vorhanden | Nicht vorhanden |
| DATE | DATE | Nicht vorhanden | 8 |
| DECIMAL | DECIMAL | 1 - 18 | 1 - 10 |
| DOUBLE | FLOAT | Nicht vorhanden | 8 |
| FLOAT | FLOAT | Nicht vorhanden | 8 |
| GRAPHIC | DBCHAR | 1 - 16383 | 2 - 32766 |
| INTEGER | INT | Nicht vorhanden | 4 |
| LONG VARBINARY | HEX | 65534 | 32767 |
| LONG VARCHAR | CHAR | >4000 | >4000 |
| LONG VARGRAPHIC | DBCHAR | >2000 | >4000 |
| NUMERIC | DECIMAL | 1 - 18 | 1 - 10 |
| REAL | SMALLFLOAT | Nicht vorhanden | 4 |
| SMALLINT | SMALLINT | Nicht vorhanden | 2 |
| TIME | TIME | Nicht vorhanden | 6 |
| TIMESTAMP | TIMESTAMP | Nicht vorhanden | 14 |
| VARBINARY | HEX | 2 - 65534 | 1 - 32767 |
| VARCHAR | CHAR | ≤ 4000 | ≤ 4000 |
| VARGRAPHIC | DBCHAR | ≤ 2000 | ≤ 4000 |
Die Definition einer SQL-Tabellenspalte des Typs VARCHAR oder VARGRAPHIC enthält eine maximale Länge. Anhand dieses Werts ordnet der Befehl RETRIEVE der EGL-Hostvariablen eine Länge zu. In der Definition einer SQL-Tabellenspalte des Typs VARCHAR oder VARGRAPHIC ist jedoch keine maximale Länge enthalten. In diesem Fall verwendet der Befehl RETRIEVE den Maximalwert des SQL-Datentyps, um eine Länge zuzuordnen.
Kompatibilität
| Plattform | Problem |
|---|---|
| Java™-Generierung | Werden numerische Daten einer SQL-Tabellenspalte in eine kürzere Hostvariable eingelesen, behandelt EGL diese Situation wie einen Überlauf bei einer Zuordnungsanweisung. |
| COBOL-Generierung | Werden numerische Daten einer SQL-Tabellenspalte in eine kürzere Hostvariable eingelesen, werden führende Nullen am linken Rand abgeschnitten. Passt die Zahl noch immer nicht in die Hostvariable, wird der gebrochene Abschnitt der Zahl (Dezimalstellen) am rechten Rand gelöscht. Es wird kein Fehler gemeldet. Wenn die Zahl noch immer zu groß ist, wird ein negativer SQL-Code zurückgegeben, um auf die Überlaufbedingung hinzuweisen. |