中的主机变量数组 PL/I

在 PL/I 程序中,可以指定数字、字符、图形、二进制、LOB、XML 和 ROWID 主机变量数组。 您还可以指定LOB定位器和LOB和XML文件引用变量。

在以下情况下,宿主变量数组只能作为简单引用。 在语法图中, host-variable-array 表示对宿主变量数组的引用。

  • 在FETCH语句中,用于多行取回。 参见 FETCH语句
  • 在插入语句的FOR n ROWS形式中,源数据使用主机变量数组。 参见插入语句
  • 在MERGE语句中,源数据有多个行。 参见MERGE语句
  • 在执行语句中,为INSERT语句或MERGE语句的动态 FOR n ROWS形式的参数标记提供值。 参见 “执行”语句

更改开始如果应用程序在不支持的其他上下文中引用主机变量数组, Db2 会返回 SQLCODE -312 错误。更改结束

限制:
  • 只有部分有效的 PL/I 声明是有效的主机变量声明。 预编译器会使用 PL/I DEFAULT 语句中指定的数据属性默认值。 如果宿主变量的声明无效,任何引用宿主变量数组的SQL语句都可能会导致出现“未声明的宿主变量数组”消息。
  • 宿主变量数组的排列、范围和存储属性有以下限制:
    • 具有外部作用域属性和静态存储属性的声明还必须具有初始化存储属性。
    • 如果使用 BASED 存储属性,则必须在其后使用 PL/I 元素定位符表达式。
    • 宿主变量可以是静态、受控、基于或自动存储类,也可以是选项。 然而, CICS® 要求程序可重入。
    尽管预编译器仅使用变量数组的名称和数据属性,而忽略对齐、范围和存储属性,但您不应忽略这些限制。 如果忽略它们,在编译预编译器生成的 PL/I 源代码时可能会遇到问题。
  • 当您声明要在多行INSERT和FETCH语句中使用的可变长度字符数组或可变长度图形数组时,必须指定ALIGNED属性。

数字主机变量数组

下图显示了用于声明数值主机变量数组的语法。

阅读语法图跳过可视化语法图DECLAREDCL变量名(,变量名)(规格)(,变量名(规格1))BINARYBINDECIMALDECFIXED(精确, 扩展2)FLOAT(精确)3校准和/或范围和/或存储
注意:
  • 1 维度必须为1-32767范围内的整数常数。
  • 2 您只能指定小数点后固定位的精度。
  • 3 可以以 PL/I 接受的任何顺序指定主机变量数组属性。 例如,BIN FIXED(31)、BINARY FIXED(31)、BIN(31) FIXED和FIXED BIN(31)都是可以接受的。

示例

以下示例显示了一个指示器数组的声明。
DCL IND_ARRAY(100) BIN FIXED(15);   /* DCL ARRAY of 100 indicator variables */

要使用 PL/I 十进制浮点主机数据类型,需要使用 FLOAT(DFP) 和 ARCH(7) 编译器选项以及 Db2 协处理器。 扩展十进制浮点数的最大精度为34(十六进制浮点数精度为33)。 短小十进制浮点数的最大精度为7(十六进制浮点数精度为6)。

字符宿主变量数组

下图显示了声明字符宿主变量数组(CLOB除外)的语法。

阅读语法图跳过可视化语法图DECLAREDCL变量名(,变量名)(规格)(,变量名(规格1)) CHARACTERCHAR(长度)VARYINGVAR 校准和/或范围和/或存储
注意:
  • 1 维度必须为1-32767范围内的整数常数。

示例

以下示例显示了从部门表中检索10行部门编号和名称所需的声明:
DCL DEPTNO(10)    CHAR(3);                     /* Array of ten CHAR(3) variables */
DCL DEPTNAME(10)  CHAR(29) VAR;            /* Array of ten VARCHAR(29) variables */

图形主机变量数组

下图显示了除DBCLOB之外的其他图形宿主变量数组的声明语法。

阅读语法图跳过可视化语法图DECLAREDCL变量名(,变量名)(规格)(,变量名(规格1)) GRAPHIC(长度)VARYINGVAR 校准和/或范围和/或存储
注意:
  • 1 维度必须为1-32767范围内的整数常数。

二进制宿主变量数组

下图显示了声明二进制变量数组的语法。

阅读语法图跳过可视化语法图DCLDECLARE变量名(,变量名)(规格)(,变量名(规格))SQL TYPE IS BINARYVARBINARY

LOB、定位器和文件参考变量数组

下图显示了声明BLOB、CLOB和DBCLOB主机变量、定位器和文件引用变量数组的语法。

阅读语法图跳过可视化语法图DCL DECLARE 变量名(,变量名)(规格)(,变量名(规格1))SQL TYPE ISBINARY LARGE OBJECTBLOBCHARACTER LARGE OBJECTCHAR LARGE OBJECTCLOBDBCLOB(长度KMG)BLOB_LOCATORCLOB_LOCATORDBCLOB_LOCATORBLOB_FILECLOB_FILEDBCLOB_FILE
注意:
  • 1 维度必须为1-32767范围内的整数常数。

XML主机和文件引用变量数组

下图显示了用于声明BLOB、CLOB和DBCLOB主机变量数组以及XML数据类型的文件引用变量数组的语法。

阅读语法图跳过可视化语法图DCL DECLARE 变量名(,变量名)(规格)(,变量名(规格1))SQL TYPE IS XML ASBINARY LARGE OBJECTBLOBCHARACTER LARGE OBJECTCHAR LARGE OBJECTCLOBDBCLOB(长度KMG)BLOB_FILECLOB_FILEDBCLOB_FILE
注意:
  • 1 维度必须为1-32767范围内的整数常数。

ROWID 变量数组

下图显示了声明ROWID变量数组的语法。

阅读语法图跳过可视化语法图DCLDECLARE变量名(,变量名)(规格)(,变量名(规格1))SQL TYPE ISROWID
注意:
  • 1 维度必须为1-32767范围内的整数常数。