2014-09-24 48 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;