中的主机变量数组 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® 要求程序可重入。
- 当您声明要在多行INSERT和FETCH语句中使用的可变长度字符数组或可变长度图形数组时,必须指定ALIGNED属性。
数字主机变量数组
下图显示了用于声明数值主机变量数组的语法。
示例
以下示例显示了一个指示器数组的声明。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除外)的语法。
示例
以下示例显示了从部门表中检索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之外的其他图形宿主变量数组的声明语法。
二进制宿主变量数组
下图显示了声明二进制变量数组的语法。
LOB、定位器和文件参考变量数组
下图显示了声明BLOB、CLOB和DBCLOB主机变量、定位器和文件引用变量数组的语法。
XML主机和文件引用变量数组
下图显示了用于声明BLOB、CLOB和DBCLOB主机变量数组以及XML数据类型的文件引用变量数组的语法。
ROWID 变量数组
下图显示了声明ROWID变量数组的语法。
