暗黙の SQL ステートメントの表示
ターゲットとして SQL レコード変数を指定する EGL データ・アクセス・ステートメント (add、get など) を使用すると、EGL は暗黙の SQL ステートメントを常に作成します。この機能により、SQL に関する知識が一切ないユーザーであっても、リレーショナル・データベースにアクセスする関数を作成できるようになります。また、デフォルトの SQL コードを生成して、それをカスタマイズすることもできます。
EGL では、SQL レコード定義に基づくデフォルトの SELECT ステートメントを表示することもできます。
デフォルトの SELECT ステートメント
SQL レコード定義の最初の行で右クリックし、「SQL レコード」を選択します。2 番目のメニューに、以下の選択項目が表示されます。
- SQL を検索
- レコードの定義中にこのオプションを使用すると、データベース・テーブル内のフィールドに基づいたレコード定義の構成が EGL に対して指示されます。 SQL テーブル・データの検索を参照してください。
- デフォルト選択を表示
- このオプションを使用すると、ウィンドウがポップアップして、現行レコード内のすべての情報を戻す SQL SELECT ステートメントが、そこに表示されます。このウィンドウの内容をコピーできます。該当箇所を強調表示して、Ctrl+C を押してください。
- デフォルト選択を検証
- このオプションは、SELECT ステートメント内の情報を参照先 SQL データベースの構造と比較して、その照会が正しく行われるようにします。
暗黙の SQL 文
組み込み SQL ステートメントは、暗黙的な SQL ステートメントとは対照的です。 ここでは、#sql ディレクティブで導入された明示的な SQL コードを、EGL I/O ステートメントの一部として組み込みます。 #sql 構文の詳細については、sql ディレクティブを参照してください。
暗黙的な SQL コードを組み込み SQL コードに変換するには、SQLRecord ステレオタイプを持つレコード・パーツに基づいてレコード変数を参照する、EGL I/O ステートメント内の任意の場所を右クリックします。メニューから「SQL ステートメント」を選択します。このセクションのすべての例は、以下のレコード・パーツを使用します。
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
SQL ステートメント・メニューからは、以下のオプションが使用可能です。
- 追加
- このオプションは、暗黙的な SQL コードを組み込み SQL コードに変換し、それをプログラムに追加します。
「追加」オプションは単純な入出力ステートメント get
myCustomer を以下のステートメントに変換します。
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 }; - into で追加
- このオプションは、「追加」とほぼ同じように機能しますが、フィールド名に関する EGL into 節を EGL レコード変数に組み込みます。これは、一部のフィールドのみを更新したい場合に便利です。次のように、更新したくないフィールド名を into および select 節から除去することができます。
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 }; - 表示
- このオプションは、コードへの追加を行わずに、暗黙的な SQL コードを表示します。ただし、ポップアップ表示内のコードを強調表示させて Ctrl+C を押すことで、その箇所をコピーすることができます。「表示」ダイアログでは、SQL ステートメントに対して「追加」、「into で追加」、「リセット」、および「検証」の各オプションを使用することもできます。
- 検証
- このオプションは、暗黙的な SQL コードが正しい形式で作成され、正しく機能しているかどうかを検査します。
- 除去
- このオプションは、組み込み SQL コードを除去してから、元の入出力ステートメントに戻ります。
- リセット
- EGL によってプログラムに追加された組み込みコードを編集した場合、このオプションを使用すると、すべての編集内容が取り消され、元の組み込みコードが復元されます。