使用JDBC改变Oracle的session参数 NLS_DATE_FORMAT
来源:互联网 发布:sql union all join 编辑:程序博客网 时间:2024/05/29 09:37
最近项目除了一个问题,场景大概是这样的,项目在国外开发,在项目开发过程中使用了大量的Oracle函数TO_DATE,但是开发人员没有写第二个参数。
所以项目在国外的服务器上可以正常运行,可是在国内的服务器上就不能正常运行了。
通过调查是因为,TO_DATE函数的第一个参数为YYYYMMDD,第二个参数为空时,默认使用session中NLS_DATE_FORMAT参数。
数据库服务器采用的是英文版,所以默认NLS_DATE_FORMAT是RR-MM-DD,而在国外连接到Oracle数据库服务器时,会使用客户端的参数
覆盖服务器端的参数。(这个是根据Oracle官方文档得出的)
This initial value is overridden by a client-side value if the client uses the 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》》Oracle下以key开始的key下添加了String Value, NLS_DATE_FORMAT=YYYYMMDD。
通过实验证实,这个修改对于SQLPLUS是有效的,可是对于SQLDeveloper是无效的。目前还没有找到对SQLDeveloper有效的方法。
其次,对于JDBC也没有找到设置参数的方式,如果大家有好的方法可以给我留言。
不过退而求其次,我找到了一个可以解决这个问题的方法,那就是创建触发器。
我创建的触发器如下:
CREATE OR REPLACE TRIGGER LOGINTRG
AFTER LOGON ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''RR/MM/DD''';
END LOGINTRG;
注意要是日期格式不对,SQL不会执行。
- 使用JDBC改变Oracle的session参数 NLS_DATE_FORMAT
- Oracle session nls_date_format
- Oracle数据库当前的nls_date_format参数值查询及设置
- Oracle数据库当前的nls_date_format参数值查询及设置
- nls_date_format参数
- Oracle NLS_DATE_FORMAT
- oracle 性能优化操作十三: 使用nls_date_format
- oracle 性能优化操作十三: 使用nls_date_format
- 【转】Oracle中 NLS_DATE_FORMAT的设置方法
- 修改NLS_DATE_FORMAT参数
- NLS_DATE_FORMAT参数详解
- ORA-01843 无效的月份的解决方法/NLS_DATE_FORMAT参数
- Oracle Study之--NLS_DATE_FORMAT
- Oracle PL/SQL之令人不解的提示(nls_date_format)
- 修改ORACLE-NLS_DATE_FORMAT时间格式的四种方式
- ORACLE修改默认时间格式的四种方式:NLS_DATE_FORMAT
- nls_date_format参数设置的问题
- 关于NLS_DATE_FORMAT的设置
- 采用曼码调制的非接触式IC卡译码软件设计
- 从Eclipse启动tomcat服务器,访问出现 404 错误的解决方案
- jsp和servlet的区别
- 各种基金调用介绍
- nodejs文件操作
- 使用JDBC改变Oracle的session参数 NLS_DATE_FORMAT
- CentOS错误:Cannot retrieve metalink for repository: epel
- Skinned Mesh原理解析和一个最简单的实现示例
- C++之tinyXML使用
- C陷阱与缺陷-连接
- 蓝牙4.0 BLE初探
- printk及控制台的日志级别
- 移动医疗健康,谁都想分一杯羹
- Android界面与交互设计原则