使用 ALLOCATE ROW 语句为 row 变量分配内存。该语句是 SQL ANSI/ISO 标准的扩展。在
ESQL/C 中使用此语句。
语法
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1MmZhRDO4UTOxIzN5ImZ5IjN4QDM4QmNiFDOiZWO0Q2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
元素 描述 限制 语法
variable 要分配的已归类或未
归类的 row 变量名称
必须为未分配的 GBase 8s
ESQL/C row 类型主变量
特定于
语言
用法
ALLOCATE ROW 语句为存储 row 类型数据的主变量分配内存。要创建 row 变量,ESQL/C 程序必须
执行以下操作:
声明 row 变量。row 变量可以是已归类或未归类的 row 变量。
使用 ALLOCATE ROW 语句为 row 变量分配内存。
以下示例显示如何使用 ALLOCATE 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;
如果内存分配操作成功,则 ALLOCATE ROW 语句会将 SQLCODE (sqlca.sqlcode 的内容)置
零(0);如果分配失败,会将其设置为一个负的错误码。
您必须使用 DEALLOCATE ROW 语句显示地释放内存。一旦您使用 DEALLOCATE ROW 语句释放了该
row 变量,您就可以重新使用该 row 变量。
提示: ALLOCATE ROW 语句仅为 GBase 8s ESQL/C row 变量分配内存。要为 GBase 8s ESQL/C
collection 变量分配内存,请使用 ALLOCATE COLLECTION 语句。
当您在多次函数调用中使用同一 row 变量而未对其解除分配时,会导致客户机计算机上的内存泄
露。因为没有办法确定指针在传递时是否是有效的,所以 GBase 8s ESQL/C 会假设它是无效的,
并将其分配到新的内存位置