南大通用GBase8s 常用SQL语句(112)

本文介绍了GBase8s中用于释放系统描述符区域和ROW变量内存的DEALLOCATEDESCRIPTOR及DEALLOCATEROW语句。DEALLOCATEDESCRIPTOR用于释放分配的系统描述符区域,而DEALLOCATEROW则用于释放ROW变量的内存。这两个语句在程序结束时如果不显式调用,会自动执行,但推荐在不再需要时主动释放以优化内存使用。示例展示了如何在ESQL/C中正确使用这两个语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    1. 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';

    1. 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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值