在WLS中设置数据源时,我们可以为它提供一个 init SQL 语句,该语句在创建此数据源的每个连接后立即执行。
到目前为止,我们正在使用..
SQL ALTER SESSION SET current_schema=user01
..因为我们使用权限少于所有者user02
的应用user01
登录,但我们仍希望数据源能够看到架构。
现在我们要将一些会话元信息添加到DS连接,以便在数据库端进行调试。陈述..
DBMS_APPLICATION_INFO.set_client_info('bar');
DBMS_APPLICATION_INFO.set_module('qux', 'garp');
..允许您将自定义字符串设置为标识符,然后以V_$SESSION
的列显示,从而为DBA提供有关数据库连接的更多信息。
我的问题
如何使用多行init SQL语句?请注意,init SQL语法需要一个SQL命令,该命令前面有SQL
,并且不以分号;
结尾。
编辑:
到目前为止我尝试过的是......
begin
execute immediate 'ALTER SESSION SET current_schema=uzms01';
DBMS_APPLICATION_INFO.set_client_info('bar');
DBMS_APPLICATION_INFO.set_module('qux', 'garp');
end;
..但我一直收到错误。 :(
答案 0 :(得分:1)
看起来有一个小的语法不规则,我没有发现,因为SQL开发人员没有问题地执行它...
以下代码段有用(请注意immediate
之后的括号):
SQL BEGIN
execute immediate('alter session set current_schema=user01');
DBMS_APPLICATION_INFO.set_client_info('my client');
DBMS_APPLICATION_INFO.set_module('my module', 'my action');
END;