执行 CONNECT 语句时要遵循某些规则。
如果应用程序进程具有当前连接,那么该应用程序进程处于已连接状态。CURRENT SERVER 专用寄存器包含当前连接的应用程序服务器名称。应用程序进程可以执行引用该应用程序服务器所管理的对象的 SQL 语句。
当处于未连接状态的应用程序进程成功执行 CONNECT 或 SET CONNECTION 语句后,它将进入已连接状态。如果没有连接,但发出了 SQL 语句,那么只要使用缺省数据库名称设置了 DB2DBDFT 环境变量,就会建立隐式连接。
如果应用程序进程没有当前连接,那么该应用程序进程处于未连接状态。唯一可以执行的 SQL 语句有 CONNECT、DISCONNECT ALL、DISCONNECT(指定数据库)、SET CONNECTION、RELEASE、COMMIT、ROLLBACK 和本地 SET 语句。
如果处于已连接状态的应用程序进程的当前连接有意结束,或者由于 SQL 语句失败而导致应用程序服务器中执行回滚操作且连接中断,那么该应用程序进程将进入未连接状态。成功执行 DISCONNECT 语句,或者在连接处于释放暂挂状态时成功执行 COMMIT 语句后,连接会有意结束。(如果 DISCONNECT 预编译程序选项设为 AUTOMATIC,那么所有连接都将结束。如果它设为 CONDITIONAL,那么没有打开的 WITH HOLD 游标的所有连接都将结束。)