Mit EGL können SQL-Datensatzfelder anhand der Definition einer SQL-Tabelle oder einer entsprechenden Ansicht oder Verknüpfung erstellt werden.
Record myTable type sqlRecord
end
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.
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.
| 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. |