EGL erstellt immer dann implizite SQL-Anweisungen, wenn Sie eine EGL-Datenzugriffsanweisung (z. B. add oder get) verwenden, die als Ziel eine SQL-Satzvariable angibt. Diese Funktion ermöglicht Ihnen das Schreiben von Funktionen, die auf eine relationale Datenbank zugreifen, auch wenn Sie über keinerlei SQL-Kenntnisse verfügen. Ferner können Sie SQL-Standardcode generieren, der dann angepasst werden kann.
EGL kann auch eine Anweisung DEFAULT SELECT anzeigen, die auf einer SQL-Datensatzdefinition basiert.
Das Gegenteil einer impliziten SQL-Anweisung ist eine eingebettete SQL-Anweisung. Dabei fügen Sie im Rahmen einer EGL-E/A-Anweisung, die von einer #sql-Direktive eingeführt wird, expliziten SQL-Code ein. Einzelheiten zur #sql-Syntax finden Sie in sql (Direktive).
record CustomerRecord type SQLRecord
{tableNames = [["ADMINISTRATOR.CUSTOMER", "L1"]],
keyItems = [customerNumber]}
customerNumber STRING {column="C_NUMBER", maxLen=6};
customerName STRING {column="C_NAME", isSQLNullable=yes, maxLen=25};
customerAddr1 STRING {column="C_ADDR1", isSQLNullable=yes, maxLen=25};
customerAddr2 STRING {column="C_ADDR2", isSQLNullable=yes, maxLen=25};
customerAddr3 STRING {column="C_ADDR3", isSQLNullable=yes, maxLen=25};
customerBalance MONEY {column="C_BALANCE", isSQLNullable=yes};
end
get myCustomer with #sql{
select
C_NUMBER, C_NAME, C_ADDR1, C_ADDR2, C_ADDR3, C_BALANCE
from ADMINISTRATOR.CUSTOMER L1
where
C_NUMBER = :myCustomer.customerNumber
};
get myCustomer
into myCustomer.customerNumber, myCustomer.customerName,
myCustomer.customerAddr1, myCustomer.customerAddr2,
myCustomer.customerAddr3, myCustomer.customerBalance with
#sql{
select
C_NUMBER, C_NAME, C_ADDR1, C_ADDR2, C_ADDR3, C_BALANCE
from ADMINISTRATOR.CUSTOMER L1
where
C_NUMBER = :myCustomer.customerNumber
};