sqlRecord タイプのレコード・パーツを EGL ファイルに宣言します。
詳細については、『EGL ソース形式』に説明します。EGL とリレーショナル・データベースの対話方法の概要については、『SQL サポート』を参照してください。
SQL レコード・パーツの例を次に示します。
Record mySQLRecordPart type sqlRecord
{
tableNames = [["mySQLTable", "T1"]],
keyItems = ["myHostVar01"],
defaultSelectCondition =
#sqlCondition{ // #sqlCondition と中括弧の間にスペースを入れない
myHostVar02 = 4 -- start each SQL comment
-- with a double hypen
}
}
// SQL レコードの構造には階層がありません。
10 myHostVar01 myDataItemPart01
{
column = "column01",
isNullable = no,
isReadOnly = no
};
10 myHostVar02 myDataItemPart02
{
column = "column02",
isNullable = yes,
isReadOnly = no
};
end
SQL レコード・パーツの構文図は、以下のとおりです。
- Record recordPartName sqlRecord
- パーツを sqlRecord タイプのレコード・パーツとして識別し、名前を指定します。命名の規則については、『命名規則』を参照してください。
- tableNames = [["name", "label"],
...., ["name", "label"]]
- テーブルまたは SQL レコードによってアクセスされるテーブルをリストします。特定のテーブル名変数にラベルを指定する場合、そのラベルは、レコードに関連付けられているデフォルトの SQL ステートメントに含まれます。
テーブル名変数には二重引用符 (") を含めることができますが、その場合は、二重引用符の前にエスケープ文字 (¥) を付ける必要があります。その規則は、
例えば、テーブル名が以下の SQL 予約語のいずれかである場合に必要です。
- CALL
- FROM
- GROUP
- HAVING
- INSERT
- ORDER
- SELECT
- SET
- UPDATE
- UNION
- VALUES
- WHERE
これらの名前は、二重引用符で囲む必要があります。唯一のテーブル名が
SELECT である場合は、
例えば、tableNames 文節は次のとおりです。
tableNames=[["\"SELECT\""]]
SQL 予約語の 1 つが列名として使用される場合にも同様な状態が当てはまります。
- tableNameVariables = [["varName", "label"],
...., ["varName", "label"]]
-
1 つ以上のテーブル名変数をリストします。
それぞれのテーブル名変数には SQL レコードによってアクセスされるテーブルの名前が含まれます。テーブルの名前は実行時にのみ決定されます。
変数は、ライブラリー名によって修飾することや、添え字を付けることができます。
特定のテーブル名変数にラベルを指定する場合、そのラベルは、レコードに関連付けられているデフォルトの SQL ステートメントに含まれます。
テーブル名変数を単独で、
またはテーブル名とともに使用することができますが、
テーブル名変数を使用すると、SQL ステートメントの特性は実行時にのみ決定される特性が保証されます。
テーブル名変数には二重引用符 (") を含めることができますが、その場合は、二重引用符の前にエスケープ文字 (¥) を付ける必要があります。
- keyItems = = ["item",
...., "item"]
- 特定のレコード項目に関連付けられている列が、データベース表内のキーの一部であるかどうかを指定します。データベース表が複合キーを持つ場合、キーとして定義されたレコード項目の順序は、データベース表のキーとなる列の順序と同じでなければなりません。
- defaultSelectCondition = #sqlCondition { sqlCondition }
- 暗黙の SQL ステートメントの WHERE 文節内の検索基準の一部を定義します。defaultSelectCondition の値には、SQL キーワードの WHERE は含まれません。
次の EGL 文のいずれかをコーディングすると、EGL により WHERE 文節が指定された暗黙の SQL ステートメントが提供されます。
- get
- open
- execute (暗黙の SQL
DELETE または UPDATE ステートメントを要求する場合に限る)
暗黙の SQL ステートメントは、EGL ソース・コード内に保管されません。
これらのステートメントの概要については『SQL サポート』を参照してください。
- containerContextDependent
- レコードが、レコードを使用するプログラム、ライブラリー、または pageHandler によって定義が異なる少なくとも 1 つのデータ項目を参照するかどうかを示します。詳細については、『containerContextDependent』を参照してください。
- level
- 構造体フィールドの階層位置を示す整数。この値を除外する場合、パーツは
レコード・パーツです。この値をインクルードする場合、パーツは固定レコード・パーツです。
- structureFieldName
- 構造体フィールドの名前。命名の規則については、『命名規則』を参照してください。
- primitiveType
- 構造体フィールドに割り当てられるプリミティブ型。
- length
- 構造体フィールドの長さ (整数)。構造体項目に基づくメモリー領域の値には、指定された数の文字または数字が含まれます。
- decimals
- decimals は、数値タイプ (BIN、DECIMAL、NUM、NUMC、または PACF) に対して指定できます。これは、小数点以下の桁数を表す整数です。小数部の桁の最大数は、18 または length で宣言された桁数の小さいほうです。小数点は、データとともに保管されません。
- "dateTimeMask"
- INTERVAL 型または TIMESTAMP 型の項目には、"dateTimeMask" を指定できます。これは、項目の値の特定の位置に意味 (「年の桁」など) を割り当てるものです。
このマスクは、データと一緒には格納されません。
- dataItemPartName
- 宣言されている構造体項目の形式のモデルとして機能する dataItem パーツ名を指定します。詳細については、『typeDef』を参照してください。
- embed sqlRecordPartName
- sqlRecord タイプのレコード・パーツ名を指定し、
そのレコード・パーツの構造体を現在のレコードに組み込みます。組み込まれた構造体項目は
一定レベルの階層を現在のレコードに追加しません。詳細については、『typeDef』を参照してください。
- property
- 項目のプロパティー。詳細については、『EGL プロパティーとオーバーライドの概要』に説明します。SQL レコードでは、SQL フィールドのプロパティーが特に重要です。