EGL 源格式的 SQL 记录部件

可以在 EGL 文件中声明类型为 sqlRecord 的记录部件,EGL 源格式对该部件作了描述。有关 EGL 如何与关系数据库进行交互的概述,请参阅 SQL 支持

下面是 SQL 记录部件的示例:
  Record mySQLRecordPart type sqlRecord
    { 
      tableNames = [["mySQLTable", "T1"]],
      keyItems = ["myHostVar01"],
      defaultSelectCondition =
        #sqlCondition{ // no space between #sqlCondition and the brace
          myHostVar02 = 4 -- start each SQL comment 
                        -- with a double hypen
            }
     }

    // The structure of an SQL record has no hierarchy
    10 myHostVar01 myDataItemPart01
       {
         column = "column01",
         isNullable = no,
         isReadOnly = no
       };
    10 myHostVar02 myDataItemPart02
       {
         column = "column02",
         isNullable = yes,
         isReadOnly = no
       };
	 end
SQL 记录部件的语法图如下所示:

SQL 记录部件的语法图
Record recordPartName sqlRecord
将该部件标识为类型为 sqlRecord 的 SQL 记录部件,并指定名称。有关规则,请参阅命名约定
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 保留字的其中一个被用作列名时,会发生类似的情况。

tableNameVariables = [["varName", "label"], ...., ["varName", "label"]]

列示一个或多个表名变量,它们中的每一个都包含由 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 支持

level
一个整数,它指示结构字段的分层位置。如果排除此值,则该部件为记录部件;如果包括此值,则该部件为固定记录部件。
structureFieldName
结构字段的名称。有关规则,请参阅命名约定
primitiveType
指定给结构字段的基本类型。
length
结构字段的长度,它是一个整数。基于结构项的内存区的值包括指定的字符或数字的数量。
decimals
对于数字类型(BIN、DECIMAL、NUM、NUMC 或 PACF),可以指定 decimals,它是用来表示小数点后的位数的整数。最大小数位数是以下两个数字中较小的那一个:18 或声明为 length 的位数。小数点不与数据存储在一起。
"dateTimeMask"
对于类型为 TIMESTAMP 和 INTERVAL 的项,可指定“dateTimeMask”,它会赋予项值中的给定位置特别的意义(如“年份位”)。掩码不会与数据存储在一起。
dataItemPartName
指定作为正在声明的结构项的格式模型的 dataItem 部件的名称。有关详细信息,请参阅 typeDef
embed sqlRecordPartName
指定类型为 sqlRecord 的记录部件的名称并将该记录部件的结构嵌入到当前记录中。嵌入的结构不会对当前记录添加层次结构级别。有关详细信息,请参阅 typeDef
property
一个项属性,如 EGL 属性与覆盖概述中所述。在 SQL 记录中,SQL 字段属性特别重要。

相关概念
EGL 项目、包和文件
EGL 属性概述
部件
对部件的引用
记录部件
SQL 支持
Typedef

相关任务
EGL 语句和命令的语法图

相关参考
数组

EGL 源格式的 DataItem 部件
EGL 源格式
EGL 源格式的函数部件
EGL 源格式的带索引记录部件
EGL 源格式的 MQ 记录部件
命名约定
基本类型
EGL 源格式的程序部件
引用 EGL 中的变量
EGL 源格式的相关记录部件
EGL 源格式的串行记录部件
SQL 项属性

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.