CLOSE DATABASE 语句

使用 CLOSE DATABASE 语句关闭当前数据库的隐式连接。该语句是 SQL ANSI/ISO 标准的扩展。

语法

用法

当发出 CLOSE DATABASE 语句时,紧接其后您仅能发出以下 SQL 语句:
  • CONNECT
  • CREATE DATABASE
  • DATABASE
  • DROP DATABASE
  • DISCONNECT

    (这里,只有在执行 CLOSE DATABASE 之前存在显式连接的情况下,DISCONNECT 语句才有效。)

在删除当前数据库之前发出 CLOSE DATABASE 语句。

如果当前数据库支持事务日志记录,并且如果已启动了事务,则必须发出 COMMIT WORK 或 ROLLBACK WORK 语句,然后才能使用 CLOSE DATABASE 语句。

以下示例显示了如何使用 CLOSE DATABASE 语句来删除当前数据库,它的会话已建立一个隐式连接:
DATABASE stores_demo;
          . . .
          CLOSE DATABASE;
          DROP DATABASE stores_demo;

GBase 8s ESQL/C 中,CLOSE DATABASE 语句不能出现在多语句的 PREPARE 操作中。

如果先前的 CONNECT 语句已经和数据库建立了显式连接,而且该连接仍然是当前连接,那么就不能使用 CLOSE DATABASE 语句关闭该显式连接。(可以使用 DISCONNECT 语句关闭该显式连接。)

如果在 WHENEVER 语句调用的 UDR 中使用 CLOSE DATABASE 语句,则应在 ROLLBACK WORK 语句之前指定 WHENEVER SQLERROR CONTINUE 和 WHENEVER SQLWARNING CONTINUE 。如果 ROLLBACK WORK 语句遇到错误或警告,则此操作可防止程序循环。

当发出 CLOSE DATABASE 语句时,任何已声明的游标不再有效。您必须重新声明任何想要使用的游标。

在 ANSI 兼容的数据库中,如果在没有发出 CLOSE DATABASE 、COMMIT WORK 或 DISCONNECT 语句的情况下,以非交互式方式从 DB-Access 退出时没有遇到错误,则数据库服务器自动提交任何打开的事务。