DISCONNECT DEFAULT 断开缺省连接。
缺省连接是指以下一种连接:
⚫ 由 CONNECT TO DEFAULT 语句建立的连接
⚫ 由 DATABASE 或 CREATE DATABASE 语句建立的隐式缺省连接
您可以使用 DISCONNECT 断开缺省连接。如果 DATABASE 语句没有指定数据库服务器(如下 例所示),则缺省数据库服务器建立缺省的连接:
EXEC SQL database 'stores_demo'; . . . EXEC SQL disconnect default;
如果 DATABASE 语句指定了数据库服务器(如下例所示),则向该数据库服务器建立缺省的连 接:
EXEC SQL database 'stores_demo@mydbsrvr'; . . . EXEC SQL disconnect default;
在以上任何一种情况下,DISCONNECT 的 DEFAULT 选项会断开这个缺省的连接。有关更多信 息,请参阅缺省连接规范。
指定 CURRENT 关键字
DISCONNECT CURRENT 语句终止当前的连接。例如,以下程序段中的 DISCONNECT 语句终止 到数据库服务器 mydbsrvr 的当前连接:
CONNECT TO 'stores_demo@mydbsrvr'; . . . DISCONNECT CURRENT;
当事务活动时
DISCONNECT 在事务期间生成一个错误。事务仍处于活动状态,并且应用程序必须显式地提交或 回滚该事务。如果在没有发出 DISCONNECT 的情况下应用程序终止(例如是由于系统故障或程序 错误),则会回滚活动的事务。
但是,在兼容 ANSI 的数据库中,如果在非交互方式下没有发出 CLOSE DATABASE 、COMMIT WORK 或 DISCONNECT 语句便退出 DB-Access 时没有遇到错误,则数据库服务器自动提交任 何打开的事务。
在线程安全环境中断开连接
如果您在线程安全的 GBase 8s ESQL/C 应用程序中发出 DISCONNECT 语句,请记住活动的连接 只可以从它活动所在的线程内被断开。因此,一个线程无法断开另一个线程的活动连接。如果进行 这种尝试,DISCONNECT 语句会生成一个错误。
但是一旦连接变为休眠状态,任何其它线程即可断开该连接,除非有一个正在进行的事务与使用 CONNECT 的 WITH CONCURRENT TRANSACTION 子句建立的休眠连接相关联。如果休眠的连 接不是用 WITH CONCURRENT TRANSACTION 子句建立的,则 DISCONNECT 会试图在断开连 接时生成一个错误。
有关对线程安全的 GBase 8s ESQL/C 应用程序中的连接的解释,请参阅 SET CONNECTION 语 句。
指定 ALL 选项
使用关键字 ALL 终止至该时刻为止由应用程序建立的所有连接。例如,下面的 DISCONNECT 语 句断开当前的连接以及所有休眠的连接: DISCONNECT ALL;
在 GBase 8s ESQL/C 中,ALL 关键字对多线程的应用程序的效果同对单线程应用程序的效果相 同。执行 DISCONNECT ALL 语句会引起所有线程中的所有连接终止。但是,如果任何一个连接 正在使用中,或者有一个与该连接相关联的正在处理的事务,则 DISCONNECT ALL 语句失败。 如果这些条件中的任何一个为真,则不会断开任何连接。




