国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > 使用JDBC改变Oracle的session参数 NLS_DATE_FORMAT

使用JDBC改变Oracle的session参数 NLS_DATE_FORMAT

来源:程序员人生   发布时间:2014-11-09 08:41:48 阅读次数:3558次

最近项目除1个问题,场景大概是这样的,项目在国外开发,在项目开发进程中使用了大量的http://www.wfuyu.com/oracle/函数TO_DATE,但是开发人员没有写第2个参数。

所以项目在国外的http://www.wfuyu.com/server/上可以正常运行,可是在国内的http://www.wfuyu.com/server/上就不能正常运行了。


通过调查是由于,TO_DATE函数的第1个参数为YYYYMMDD,第2个参数为空时,默许使用session中NLS_DATE_FORMAT参数。

http://www.wfuyu.com/db/http://www.wfuyu.com/server/采取的是英文版,所以默许NLS_DATE_FORMAT是RR-MM-DD,而在国外连接到http://www.wfuyu.com/oracle/http://www.wfuyu.com/db/http://www.wfuyu.com/server/时,会使用客户真个参数

覆盖http://www.wfuyu.com/server/真个参数。(这个是根据http://www.wfuyu.com/oracle/官方文档得出的)

This initial value is overridden by a client-side value if the client uses the http://www.wfuyu.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.wfuyu.com/oracle/下以key开始的key下添加了String Value, NLS_DATE_FORMAT=YYYYMMDD。

通过实验证实,这个修改对SQLPLUS是有效的,可是对SQLDeveloper是无效的。目前还没有找到对SQLDeveloper有效的方法。

其次,对JDBC也没有找到设置参数的方式,如果大家有好的方法可以给我留言。

不过退而求其次,我找到了1个可以解决这个问题的方法,那就是创建触发器。

我创建的触发器以下:

CREATE OR REPLACE TRIGGER LOGINTRG
AFTER LOGON ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''RR/MM/DD''';
END LOGINTRG;

注意要是日期格式不对,SQL不会履行。


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生