使用 SET AUTOFREE 语句来指示数据库服务器启用或禁用内存管理特性,一旦游标关闭,该特性可自动地释放为该游标分配的内存。
语法
元素 | 描述 | 限制 | 语法 |
cursor_id | Autofree 要为其重设的游标的名称 | 必须已在程序中声明了 | 标识符 |
cursor_id_var | 持有 cursor_id 的值的主变量 | 必须存储在程序中已声明了的 cursor_id | 必须符合名称的特定语言的规则。 |
用法
此语句是对 SQL 的 ANSI/ISO 标准的扩展。您仅可随同 GBase 8s ESQL/C 使用此语句。
当为游标启用 Autofree 特性且该游标随后关闭时,您不需要显式地使用 FREE 语句来释放数据库服务器为该游标分配的内存。如果您发出 SET AUTOFREE 但未指定选项,则缺省为 ENABLED。
启用 Autofree 特性的 SET AUTOFREE 语句必须出现在打开游标的 OPEN 语句之前。SET AUTOFREE 语句不影响分配给已经打开的游标的内存。在启用游标的 Autofree 之后,您不可第二次打开那个游标。
如果您未包括 FOR cursor_id 或 FOR cursor_id_var 子句,则 SET AUTOFREE 的范围是该程序中所有后续声明的游标(或更准确地说,在不带有 FOR 子句的后续的 SET AUTOFREE 语句之前声明的所有游标全局地重置 Autofree 特性)。此示例为程序中所有后续的游标启用 Autofree 特性:
EXEC SQL set autofree;
下一示例为所有后续的游标禁用 Autofree 特性:
EXEC SQL set autofree disabled;
如果您指定 FOR cursor _id 或 FOR cursor_id_var,则 SET AUTOFREE 仅影响您在 FOR 关键字之后指定的游标。
此选项允许您覆盖对所有游标的全局的设置。例如,如果您在程序中为所有游标发出 SET AUTOFREE ENABLED 语句,则可发出后续的 SET AUTOFREE DISABLED FOR 语句来为特定的游标禁用 Autofree 特性。
在下列示例中,第一个语句为所有游标启用 Autofree 特性,而第二个语句为名为 x1 的游标禁用 Autofree 特性:
EXEC SQL set autofree enabled;
EXEC SQL set autofree disabled for x1;
在此,必须已声明了但尚未打开 x1 游标。