SQL 数据代码和 EGL 主变量

属性 SQL 数据代码标识要与 EGL 主变量相关联的 SQL 数据类型。在声明时、验证时或生成的程序运行时,数据库管理系统使用数据代码。

您可能想改变具有基本类型 CHAR、DBCHAR、HEX 或 UNICODE 的主变量的 SQL 数据代码。然而,对于具有其它任何一种基本类型的主变量,SQL 数据代码是固定的。

如果 EGL 从数据库管理系统中检索到列定义,则不要修改检索到的 SQL 数据代码(如果有的话)。

下列各节讨论了下列主题:

变长列和定长列

要指示一个表列是变长列还是定长列,可将相应主变量的 SQL 数据代码设置为适当的值,如下表所示。

EGL 基本类型 SQL 数据类型 变长或定长 SQL 数据代码
CHAR CHAR(缺省值) 定长 453
VARCHAR,长度 < 255 变长 449
VARCHAR,长度 > 254 变长 457
DBCHAR 和 UNICODE GRAPHIC(缺省值) 定长 469
VARGRAPHIC,长度 < 128 变长 465
VARGRAPHIC,长度 > 127 变长 473
注: SQL 数据类型可能需要使用空指示符,但是此需求对您的 EGL 程序编码方式没有影响。有关 NULL 的详细信息,请参阅 SQL 支持

SQL 数据类型与 EGL 基本类型的兼容性

在下列任何情况下,EGL 主变量与相应的 SQL 表列是兼容的:
  • SQL 列是任何形式的字符数据,而 EGL 主变量具有 CHAR 类型并且长度小于等于 SQL 列长度。
  • SQL 列是任何形式的 DBCHAR 数据,而 EGL 主变量具有 DBCHAR 类型并且长度小于等于 SQL 列长度。
  • SQL 列是任何形式的数字,而 EGL 主变量具有下列其中一种类型:
    • BIN,长度为 2 或 4 个字节,并且没有小数位。
    • DECIMAL,最大长度为 18 位,包括小数位。对于 EGL 主变量和列,DECIMAL 变量的位数应该相同。
    • SMALLINT。
  • SQL 列具有任何数据类型,EGL 主变量具有 HEX 类型,并且列和主变量包含相同的字节数。在数据传输期间不进行数据转换。

    具有 HEX 类型的 EGL 主变量支持访问具有与 EGL 基本类型不对应的数据类型的任何 SQL 列。

如果将字符数据从 SQL 表列读入到较短的主变量中,则会截断右边的内容。要测试是否发生了截断,请在 EGL if 语句中使用保留字 trunc

如果将数字数据从 SQL 表列读入到较短的主变量中,则会截断左边的前导零。如果该数字在主变量中仍放不下,则会删除数字右边的小数部分(十进制),并且不发出错误指示。如果仍放不下该数字,则会返回负数 SQL 代码,以指示溢出状态。

下表显示了当 EGL 编辑器的检索功能从数据库管理系统中抽取信息时指定的 EGL 主变量特征。

SQL 数据类型 EGL 主变量特征 SQL 数据代码(SQLTYPE)
  基本类型 长度 字节数  
BIGINT HEX 16 8 493
CHAR CHAR 1–32767 1–32767 453
DATE CHAR 10 10 453
DECIMAL DECIMAL 1-18 1–10 485
DOUBLE HEX 16 8 481
FLOAT HEX 16 8 481
GRAPHIC DBCHAR 1–16383 2–32766 469
INTEGER BIN 9 4 497
LONG VARBINARY HEX 65534 32767 481
LONG VARCHAR CHAR >4000 >4000 457
LONG VARGRAPHIC DBCHAR >2000 >4000 473
NUMERIC DECIMAL 1-18 1–10 485
REAL HEX 8 4 481
SMALLINT BIN 4 2 501
TIME CHAR 8 8 453
TIMESTAMP CHAR 26 26 453
VARBINARY HEX 2–65534 1–32767 481
VARCHAR CHAR ≤4000 ≤4000 449
VARGRAPHIC DBCHAR ≤2000 ≤4000 465

VARCHAR、VARGRAPHIC 和相关 LONG 数据类型

类型为 VARCHAR 或 VARGRAPHIC 的 SQL 表列的定义包括最大长度,检索命令使用该最大长度来指定 EGL 主变量的长度。然而,类型为 LONG VARCHAR 或 VARGRAPHIC 的 SQL 表列的定义不包括最大长度,检索命令使用 SQL 数据类型最大长度来指定长度。

DATE、TIME 和 TIMESTAMP

确保用于 EGL 系统缺省长格里历格式的格式与对 SQL 数据库管理器指定的日期格式相同。有关如何设置 EGL 格式的详细信息,请参阅 VGVar.currentFormattedGregorianDate

您会想让两种格式匹配以使系统变量 VGVar.currentFormattedGregorianDate 提供的日期具有 SQL 数据库管理器所期望的格式。

相关概念
SQL 支持

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