ALLOCATE COLLECTION 语句

使用 ALLOCATE COLLECTION 语句为集合数据类型的变量(例如 LIST 、MULTISET 或 SET )或未归类的集合变量分配内存。

语法

元素 描述 限制 语法
variable 要分配的已归类的或未归类的集合变量的名称 必须为未分配的 GBase 8s ESQL/C 集合类型主变量 特定于语言的名称规则

用法

该语句是 SQL ANSI/ISO 标准的扩展。在 ESQL/C 中使用此语句。

ALLOCATE COLLECTION 语句为可以存储 collection 数据类型的值的 ESQL/C 变量分配内存。

要为 GBase 8s ESQL/C 程序创建集合变量:

  1. GBase 8s ESQL/C 程序中作为客户机集合变量声明集合变量。

    集合变量可以是已归类或未归类的集合变量。

  2. 使用 ALLOCATE COLLECTION 语句为集合变量分配内存。

如果分配内存成功,ALLOCATE COLLECTION 语句会将 SQLCODE (也就是 sqlca.sqlcode)置零(0);如果失败,会将其设置成一个负数错误码。

当不再需要集合变量时,您必须使用 DEALLOCATE COLLECTION 语句显示地释放内存。在 DEALLOCATE COLLECTION 语句执行成功后,您可以重新使用该集合变量。
提示: ALLOCATE COLLECTION 语句仅为 GBase 8s ESQL/C 集合变量分配内存。要为 GBase 8s ESQL/C 行变量分配内存,请使用 ALLOCATE ROW 语句。

示例

以下示例显示如何使用 ALLOCATE COLLECTION 语句为未归类的集合变量 a_set 分配资源:
EXEC SQL BEGIN DECLARE SECTION;
          client collection a_set;
          EXEC SQL END DECLARE SECTION;
          . . .
          EXEC SQL allocate collection :a_set;
以下示例显示如何使用 ALLOCATE COLLECTION 语句为已归类的集合变量 a_typed_set 分配资源:
EXEC SQL BEGIN DECLARE SECTION;
          client collection set(integer not null) a_typed_set;
          EXEC SQL END DECLARE SECTION;
          . . .
          EXEC SQL allocate collection :a_typed_set;