Der Stereotyp 'SQLRecord' passt einen Datensatzabschnitt (Record) für die Verwendung mit einer relationalen Datenbank an.
Durch Stereotypisierung (siehe Stereotype) werden eindeutige Eigenschaften auf Datensatzebene und Feldebene bereitgestellt. Wenn Sie eine Variable dieses Typs als Ziel einer EGL-Datenzugriffsanweisung wie beispielsweise 'get' oder 'replace' verwenden, wird ein spezifisches Verhalten ausgelöst.
EGL kann SQLRecord-Abschnitte automatisch auf Basis von Informationen aus Ihrer Datenbank erstellen. Weitere Informationen finden Sie unter Datenzugriffsanwendung erstellen im Handbuch für EGL-Programmierer.
Record CustomerRecord type SQLRecord
{ tableNames = [["Customer"]] }
...
end
In den meisten Fällen kommt durch die SQL-Standardauswahlbedingung eine zweite Bedingung hinzu, die auf einer Zuordnung zwischen den Schlüsselfeldwerten im SQL-Datensatz und den Schlüsselspalten in der SQL-Tabelle basiert.
Geben Sie die Bedingung mithilfe der Direktive '#sqlCondition' an. Weitere Informationen finden Sie unter #sqlCondition, Direktive.
myTable STRING;
Record CustomerRecord type SQLRecord
{ tableNameVariables = [["myTable"]] }
...
end
myCustomer CustomerRecord;
function main()
myTable = requestTableName();
get myCustomer;
displayCustomer(myCustomer);
end
{ tableNameVariables = [["myTable", "T1"],
["myOtherTable", "T2"]] }
package com.CompanyB.CustomerPackage;
Record CustomerRecord type SQLRecord
{ tableNames=[["Customer", "T1"]], keyItems=["customerNumber"] }
customerNumber INT {column = "customer_number"};
customerName STRING {column = "customer_name"};
customerBalance DECIMAL(9,2) {column = "customer_balance"};
end
Record OrderRecord type SQLRecord
{ tableNames=[["Orders", "T2"]], keyItems=["orderNumber"] }
orderNumber INT {column = "order_number"};
customerNumber INT {column = "customer_number"};
orderTotal DECIMAL(9,2) {column = "order_total"};
end
program CustomerTest type BasicProgram
myCustomer CustomerRecord;
myOrder OrderRecord;
function main()
myCustomer.customerNumber = 1001;
get myCustomer with
#sql{
select
customer_name, order_total
from Customer T1, Orders T2
join Orders on T1.customer_number = T2.customer_number
where
T1.customer_number = :myCustomer.customerNumber
}
into myCustomer.customerName, myCustomer.customerBalance;
end
end
Das Feld customerNumber (Kundennummer) ist ein Primärschlüssel in der Tabelle Customer (Kunde) und ein Fremdschlüssel in der Tabelle Order (Bestellung). Nachdem Sie die beiden Tabellen verknüpft haben, müssen Sie jedoch die Bezeichnung T1 bzw. T2 verwenden, um anzugeben, auf welche Kundennummer (customerNumber) der Code verweist.