【问题标题】:Weblogic JDBC Connections: multi-statement init SQLWeblogic JDBC 连接:多语句初始化 SQL
【发布时间】:2014-09-24 11:19:34
【问题描述】:

在 WLS 中设置数据源时,我们可以给它一个 init SQL 语句,该语句在为该数据源创建每个连接后立即执行。

到目前为止,我们正在使用..

SQL ALTER SESSION SET current_schema=user01

.. 因为我们使用应用程序user02 登录,该应用程序的权限低于所有者user01,但我们仍然希望数据源看到架构。

现在我们想向 DS 连接添加一些会话元信息,以便在 DB 端进行调试。声明..

DBMS_APPLICATION_INFO.set_client_info('bar');
DBMS_APPLICATION_INFO.set_module('qux', 'garp');

.. 允许您将自定义字符串设置为标识符,然后将显示在 V_$SESSION 的列中,从而为 DBA 提供有关数据库连接的更多信息。

我的问题
怎么可能有多行初始化 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;

.. 但我不断收到错误消息。 :(

【问题讨论】:

  • 要设置当前的schema(或者catalog),您应该使用JDBC提供的方法,否则连接可能处于无效状态。
  • 我不知道为什么会话模式是这样设置的,但这是我不允许更改的。

标签: jdbc weblogic datasource


【解决方案1】:

看起来有一个小的语法不规则,我没有发现 因为 SQL 开发人员执行它没有问题...

以下 sn-p 有效(注意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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多