最近項目除1個問題,場景大概是這樣的,項目在國外開發(fā),在項目開發(fā)進程中使用了大量的http://www.jyygyx.com/oracle/函數(shù)TO_DATE,但是開發(fā)人員沒有寫第2個參數(shù)。
所以項目在國外的http://www.jyygyx.com/server/上可以正常運行,可是在國內(nèi)的http://www.jyygyx.com/server/上就不能正常運行了。
通過調(diào)查是由于,TO_DATE函數(shù)的第1個參數(shù)為YYYYMMDD,第2個參數(shù)為空時,默許使用session中NLS_DATE_FORMAT參數(shù)。
http://www.jyygyx.com/db/http://www.jyygyx.com/server/采取的是英文版,所以默許NLS_DATE_FORMAT是RR-MM-DD,而在國外連接到http://www.jyygyx.com/oracle/http://www.jyygyx.com/db/http://www.jyygyx.com/server/時,會使用客戶真?zhèn)€參數(shù)
覆蓋http://www.jyygyx.com/server/真?zhèn)€參數(shù)。(這個是根據(jù)http://www.jyygyx.com/oracle/官方文檔得出的)
This initial value is overridden by a client-side value if the client uses the http://www.jyygyx.com/oracle/ JDBC driver or if the client is OCI-based and the NLS_LANG client setting (environment variable) is defined. The initialization parameter value is, therefore, usually ignored.
但是官方文檔上沒有講怎樣做,所以查資料,在注冊表中的Software》》http://www.jyygyx.com/oracle/下以key開始的key下添加了String Value, NLS_DATE_FORMAT=YYYYMMDD。
通過實驗證實,這個修改對SQLPLUS是有效的,可是對SQLDeveloper是無效的。目前還沒有找到對SQLDeveloper有效的方法。
其次,對JDBC也沒有找到設(shè)置參數(shù)的方式,如果大家有好的方法可以給我留言。
不過退而求其次,我找到了1個可以解決這個問題的方法,那就是創(chuàng)建觸發(fā)器。
我創(chuàng)建的觸發(fā)器以下:
CREATE OR REPLACE TRIGGER LOGINTRG
AFTER LOGON ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''RR/MM/DD''';
END LOGINTRG;
注意要是日期格式不對,SQL不會履行。
上一篇 android應(yīng)用框架搭建------AppManager
下一篇 School Personal Contest #1 (Codeforces Beta Round #38)---A. Army