暗黙の SQL ステートメントの表示

ターゲットとして SQL レコード変数を指定する EGL データ・アクセス・ステートメント (addget など) を使用すると、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 によってプログラムに追加された組み込みコードを編集した場合、このオプションを使用すると、すべての編集内容が取り消され、元の組み込みコードが復元されます。

フィードバック