只有 DBA 或用户 gbasedbt 可以在 SQL 的 ALTER PROCEDURE、ALTER ROUTINE、CREATE PROCEDURE、CREATE PROCEDURE FROM、CREATE
ROUTINE FROM、DROP PROCEDURE 或 DROP ROUTINE 语句中创建或更改 sysdbopen(
) 或 sysdbclose( )。
可在连接或访问时设置更改会话属性的 sysdbopen( ) 过程,而不更改会话运行的应用程序。如果不能修改应用程序的源代码来设置环境选项(或环境变量)或包含与会话相关的 SQL 语句(例如,由于 SQL 语句包含从供应商处获得的代码)时,该操作很有帮助。
要设置 sysdbopen() 和 sysdbclose() 过程以配置会话属性,请执行以下操作:
-
将 IFX_NODBPROC 环境变量设置为任何值(包括 0)以使数据库服务器绕过并阻止 sysdbopen( ) 或 sysdbclose( ) 过程的执行。
-
编写 CREATE PROCEDURE 或 CREATE PROCEDURE FROM 语句以定义特定用户或 PUBLIC 组的过程。
-
测试过程(例如,通过使用 EXECUTE PROCEDURE 语句中的 sysdbclose(
))。
-
取消设置 IFX_NODBPROC 环境变量以使数据库服务器能够运行 sysdbopen( ) 或 sysdbclose(
) 过程。
示例
以下过程设置特定用户的角色和 PDQ 优先级:
create procedure oltp_user.sysdbopen()
set role to oltp;
set pdqpriority 5;
end procedure;
以下过程设置 PUBLIC 组的角色和 PDQ 优先级:
create procedure public.sysdbopen()
set role to others;
set pdqpriority 1;
end procedure
有关更多信息,请参阅 GBase 8s SQL 指南:语法 中有关 sysdbopen() 和 sysdbclose() 的信息。