チュートリアル「EGL の紹介 (クイック・スタート・ガイド)」を完了している場合は、リレーショナル・データベースへのアクセスに必要な EGL パーツ、およびデータベースでのデータの読み取りおよび書き込みに使用するコマンドについて既に学習しています。 この演習では、これらの概念をより詳細に説明します。
作成された中で最も代表的なデータ・パーツは、SQLRecord パーツです。これらのレコード・パーツ内のフィールドは、データベース内の列に関連しています。このレコードに基づいて変数を作成すると、その変数を使用してデータベース内の新規行または既存行を示すことができます。データ・アクセス・アプリケーション・ウィザードで作成されたそれぞれの SQLRecord は単一テーブル内の列とのみ一致しますが、この後のチュートリアルでは、複数のテーブルから単一レコードにデータをマージする方法 (SQL では「テーブル結合」といいます) を学習します。
record Customer type sqlRecord {
tablenames=[["EGL.CUSTOMER"]],
keyItems=[CustomerId]
}
CustomerId CustomerId {column="EGL.CUSTOMER.CUSTOMER_ID"};
FirstName FirstName {column="EGL.CUSTOMER.FIRST_NAME",
sqlVariableLen=yes, maxLen=30, isSqlNullable=yes};
LastName LastName {column="EGL.CUSTOMER.LAST_NAME",
sqlVariableLen=yes, maxLen=30, isSqlNullable=yes};
...
Directions Directions {column="EGL.CUSTOMER.DIRECTIONS",
sqlVariableLen=yes, maxLen=255, isSqlNullable=yes};
end
コード tablenames=[["EGL.CUSTOMER"]] はこのレコードと関連するデータベース内のテーブルを指定し、各フィールドの column プロパティーはフィールドと関連するテーブル内の列を指定します。コード keyItems=[CustomerId] は、CustomerId フィールド (および接続により、データベースの EGL.CUSTOMER.CUSTOMER_ID 列) が、このテーブルの主キーであることを示しています。| EGL コマンド | EGL サンプル | SQL コマンド |
|---|---|---|
| add | add myRecord; |
INSERT |
| get | get myRecord; |
SELECT |
| replace | replace myRecord; |
UPDATE |
| delete | delete myRecord; |
DELETE |
add myCustomer;myCustomer レコードにカーソルを置き、右クリックしてからの順にクリックすると、EGL エディターで add ステートメントが展開され、SQL コードが明示された状態で表示されます。

add myCustomer with
#sql{
insert into EGL.CUSTOMER
(EGL.CUSTOMER.CUSTOMER_ID, EGL.CUSTOMER.FIRST_NAME,
EGL.CUSTOMER.LAST_NAME, EGL.CUSTOMER.PASSWORD,
EGL.CUSTOMER.PHONE, EGL.CUSTOMER.EMAIL_ADDRESS,
EGL.CUSTOMER.STREET, EGL.CUSTOMER.APARTMENT,
EGL.CUSTOMER.CITY, EGL.CUSTOMER."STATE",
EGL.CUSTOMER.POSTALCODE, EGL.CUSTOMER.DIRECTIONS)
values
(:myCustomer.CustomerId, :myCustomer.FirstName,
:myCustomer.LastName, :myCustomer.Password,
:myCustomer.Phone, :myCustomer.EmailAddress,
:myCustomer.Street, :myCustomer.Apartment,
:myCustomer.City, :myCustomer.State,
:myCustomer.Postalcode, :myCustomer.Directions)
};
実質的な内容は全く変更されません。EGL は、add ステートメントから生成する SQL コードを開示しただけです。
コードが明示的になったので、EGL コマンドから生成されたデフォルトの SQL を編集できます。SQL INSERT ステートメントの VALUES 節に、新規データベース行 (この場合は myCustomer レコード内のフィールド) に挿入する値がリストされます。#sql ブロック内の各値の前にはコロン :) があり、値が SQL の値ではなく EGL の値であることを示しています。明示的な SQL コードで使用されるこれらの EGL 値は、「ホスト変数」と呼ばれます。
function getCustFromState(customerState CHAR(2) in,
customers Customer[] out)
get customers with
#sql{
select *
from EGL.CUSTOMER
where EGL.CUSTOMER."STATE" like :customerState
};
end
この関数は、2 バイトの CHAR 型パラメーターを受け取り、そのパラメーターをホスト変数として使用して、これらの 2 つの文字に一致する STATE フィールドを持つレコードを取得します。EGL を明示的な SQL コードと一緒に機能させるためには、ホスト変数を慎重に使用する必要があります。このセクションでは、get、add、replace、および delete を使用して、EGL を使用した基本データベース操作を実行します。このセクションはオプションです。4 つの基本 EGL データ・アクセス・ステートメントおよびそれと同等の SQL ステートメントを問題なく使用できる場合は、スキップしてかまいません。