-
- DEALLOCATE DESCRIPTOR 语句
使用 DEALLOCATE DESCRIPTOR 语句可释放先前分配的系统描述符区域。在 GBase 8s ESQL/C 中使用此语句。
语法
该语句是 SQL 语言的 ANSI/ISO 标准的扩展。
元素 | 描述 | 限制 | 语法 |
descriptor | 系统描述符区域的名称 | 使用单引号。必须已分配系统描述符区域。 | 引用字符串 |
descriptor_var | 包含系统描述符区域的名称的主变量 | 必须已分配系统描述符区域,并且必须已声明变量 | 名称必须符合特定于语言的规则 |
用法
DEALLOCATE DESCRIPTOR 语句会释放所有与 descriptor 或 descriptor_var 标识的系统描述符区域相关联的内存。它也会释放所有项描述符(包括用于项描述符中的数据项的内存)。
您可以在解除分配之后重新使用描述符或描述符变量。否则,解除分配会在程序结束时自动发生。
如果对不存在的描述符或描述符变量执行解除分配操作,则会导致错误。
你不可以使用 DEALLOCATE DESCRIPTOR 语句解除对 sqlda 结构的分配。只可以用它释放为系统描述符区域分配的内存。
以下示例显示了有效的 DEALLOCATE DESCRIPTOR 语句。第一行使用了一个嵌入变量的名称,第二行使用了一个用引号引起的字符串以标识分配的系统描述符区域。
EXEC SQL deallocate descriptor :descname;
EXEC SQL deallocate descriptor 'desc1';
-
- DEALLOCATE ROW 语句
使用 DEALLOCATE ROW 语句可释放 ROW 变量的内存。
该语句是 SQL ANSI/ISO 标准的扩展。在 ESQL/C 中使用此语句。
语法
元素 | 描述 | 限制 | 语法 |
variable | 归类的或未归类的行变量 | 必须被声明和分配 | 特定于语言 |
用法
DEALLOCATE ROW 释放与 variable 标识的 GBase 8s ESQL/C 已归类的或未归类的行变量相关联的所有内存。如果没有使用 DEALLOCATE ROW 显式地释放内存资源,程序结束时将自动执行释放。要解除 GBase 8s ESQL/C 集合变量分配的内存,可使用 DEALLOCATE COLLECTION 语句。
在解除分配 ROW 变量之后,可以使用 ALLOCATE ROW 语句重新分片资源,然后重新使用一个 ROW 变量。下面的示例显示了如何使用 DEALLOCATE ROW 语句解除为 ROW 变量 a_row 分配的资源:
EXEC SQL BEGIN DECLARE SECTION; row (a int, b int) a_row;
EXEC SQL END DECLARE SECTION;
. . .
EXEC SQL allocate row :a_row;
. . .
EXEC SQL deallocate row :a_row;