-
- FREE 语句
使用 FREE 语句来释放那些分配给准备好的语句或分配给游标的资源。
语法
元素 | 描述 | 限制 | 语法 |
cursor_id | 游标的名称 | 必须已经声明 | 标识符 |
cursor_id_var | 持有 cursor_id 值的主变量 | 必须为字符数据类型 | 特定于语言 |
statement_id | 准备好的 SQL 语句的标识符 | 必须在先前的 PREPARE 语句中定义 | PREPARE 语句 |
statement_id_var | 存储准备好的对象名称的主变量 | 必须声明为字符数据类型。 | PREPARE 语句 |
用法
随同 GBase 8s ESQL/C 或随同 SPL使用此语句,这是对 SQL 的 ANSI/ISO 标准的扩展。
FREE 释放为准备好的语句或为游标分配的(ESQL/C 的)数据库服务器和应用开发工具。
如果您为准备好的语句声明游标,则 FREE statement_id(或 statement_id_var)仅释放应用开发工具中的资源;游标仍可使用。仅当释放游标时,才释放数据库服务器中的资源。
如果您准备了语句(但没有为它声明游标),则 FREE statement_id(或 FREE statement_id_var)释放在应用开发工具和数据库服务器中的资源。
在您释放语句之后,不可执行它或为它声明游标,直到您再次准备它。
下列 GBase 8s ESQL/C 示例展示那些用于释放隐式准备好的语句的语句序列:
EXEC SQL prepare sel_stmt from 'select * from orders';
...
EXEC SQL free sel_stmt;
下列 GBase 8s ESQL/C 示例展示那些用于释放显式准备好的语句的资源的语句序列。此示例中的第一个 FREE 语句释放游标。此示例中的第二个 FREE 语句释放准备好的语句。
sprintf(demoselect, "%s %s",
"select * from customer ",
"where customer_num between 100 and 200");
EXEC SQL prepare sel_stmt from :demoselect;
EXEC SQL declare sel_curs cursor for sel_stmt;
EXEC SQL open sel_curs;
...
EXEC SQL close sel_curs;
EXEC SQL free sel_curs;
EXEC SQL free sel_stmt;
如果您为准备好的语句声明游标,则释放游标仅释放数据库服务器中的资源。要为该语句释放应用开发工具中的资源,请使用 FREE statement_id(或 FREE statement_id_var)。如果未为准备好的语句声明游标,则释放它会释放应用开发工具和数据库服务器中的资源。要查看释放游标的 FREE 语句的 ESQL/C 示例,请参阅前面的示例。
释放游标之后,不可打开它直到再次声明为止。游标应在其被释放之前明确地关闭它。
在 SPL 例程执行完毕时,数据库服务器自动地释放例程中通过 PREPARE 或 DECLARE 语句已经分配给游标或准备好的语句的任何资源,如果这些资源尚未由 FREE 语句释放的话。
SPL 例程中的 FREE 语句不可引用 SPL 的 FOREACH 语句可声明的直接游标的 cursor_id。