SQL-Tabellendaten abrufen

Mit EGL können SQL-Datensatzfelder anhand der Definition einer SQL-Tabelle oder einer entsprechenden Ansicht oder Verknüpfung erstellt werden.

Gehen Sie wie folgt vor, um SQL-Datensatzfelder anhand der Definition einer SQL-Tabelle zu erstellen:
  1. Stellen Sie sicher, dass die SQL-Vorgaben entsprechend gesetzt sind. Details hierzu finden Sie in Benutzervorgaben für SQL-Abrufe definieren.
  2. Definieren Sie die Standarddatenbankverbindung; diese Verbindung wird von EGL zum Abrufen der Tabellendaten verwendet:
    1. Klicken Sie auf Fenster > Benutzervorgaben.
    2. Erweitern Sie EGL und klicken Sie auf SQL-Datenbankverbindungen.
    3. 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.
  3. 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.
  4. 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.
    1. Falls noch kein SQL-Datensatz vorhanden ist, erstellen Sie ihn wie folgt:
      1. 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).
      2. 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
    2. Bewegen Sie den Cursor auf den Datensatz und drücken Sie die rechte Maustaste.
    3. Klicken Sie im Menü auf SQL-Datensatz > SQL abrufen.
  5. 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.
Anmerkung: Sie können keine SQL-Anzeige abrufen, die mit der DB2-Bedingung WITH CHECK OPTIONS definiert wurde.
Nach der Erstellung von Datensatzfeldern möchten Sie möglicherweise einen Produktivitätszuwachs erzielen, indem Sie die entsprechenden DataItem-Abschnitte für die Felder im Datensatz erstellen:
  1. Ö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.
  2. 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

Eine EGL-Hostvariable (siehe Hostvariablen) und die entsprechende SQL-Tabellenspalte sind in den folgenden Situationen kompatibel:
  • 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.

Tabelle 1. Merkmale von EGL-Variablen
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

Tabelle 2. Überlegungen zur Kompatibilität für SQL-Daten
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.

Feedback