2014-09-24 49 views
1

在WLS中设置数据源时,我们可以给它一个初始化SQL语句,该语句在创建此数据源的每个连接后立即执行。Weblogic JDBC连接:多语句初始化SQL

到目前为止,我们使用的是..

SQL ALTER SESSION SET current_schema=user01 

..我们在使用它具有比主人user01更少权限的应用程序user02正在登录,但我们还是希望数据源看到的模式。

现在我们想在DS连接中添加一些会话元信息,用于DB侧的调试。该声明..

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

..允许您设置自定义字符串作为标识符,那么这将在V_$SESSION colums显示出来,从而使数据库管理员有关数据库连接的更多信息。

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

用于设置当前[模式](http://docs.oracle.com/javase/8/docs/api/java/sql/Connection.html#setSchema-java.lang.String-)(或可能[目录](http://docs.oracle.com/javase/8/docs/api/java/sql/Connection.html#setCatalog-java.lang.String-)),你应该使用JDBC提供的方法,否则连接可能处于无效状态。 – 2014-09-24 12:22:10

+0

我不确定为什么会话模式的设置是这样的,但这是我不允许更改的内容。 – fgysin 2014-09-24 12:29:30

回答

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;