在连接和访问时配置会话属性

可以使用 sysdbopen( ) 过程在连接或访问时更改数据库服务器会话的属性。如果无法修改应用程序的源代码以设置环境选项或会话变量,或者包括会话相关的 SQL 语句(例如,因为 SQL 语句包含供应商获取的代码),这将非常有用。

要更改会话的属性,请为各种数据库设计自定义 sysdbopen( )sysdbclose( ) 过程,以支持特定用户或 PUBLIC 组的应用程序。sysdbopen( )sysdbclose( ) 过程可以包含数据库服务器为用户或 PUBLIC 组在数据库打开或关闭时执行的 SET 、SET ENVIRONMENT 、SQL 或 SPL 语句的序列。

例如,对于 user1,您可以定义包含在 user1 使用 DATABASE 或 CONNECT TO 语句打开数据库时执行的 SET PDQPRIORITY 、SET ISOLATION LEVEL 、SET LOCK MODE 、SET ROLE 或 SET EXPLAIN ON 语句的过程。

由于 sysdbopen( ) 过程中的 SET ENVIRONMENT 语句指定的会话环境变量 PDQPRIORITY 和 OPTCOMPIND 的任何设置将在会话持续时间内保持不变。SET PDQPRIORITY 和 SET ENVIRONMENT OPTCOMPIND 语句(对于常规过程不持久)在 sysdbopen( ) 过程中包含它们。

当作为过程所有者的用户从数据库断开连接时(或者 PUBLIC.sysdbclose( ) 运行时,如果它存在且当前用户不拥有 sysdbclose( ) 过程,运行 user.sysdbclose( ) 过程。

在自定义 sysdbopen( )sysdbclose( ) 过程中,当在与 ANSI 不兼容的数据库中调用例程时,GBase 8s 不会忽略 UDR 所有者的名称。