我想运行一个Oracle存储过程,并将结果作为数据源传递给java web应用程序中的报表。我使用的是Spring MVC,我的操作系统是Windows 7- 32bit。Oracle日期转换错误ORA-01858
的代码是这样的:
DataSource ds = jdbcTemplate.getDataSource();
Connection conn = ds.getConnection();
CallableStatement cs = conn.prepareCall(report.getStoredSQL());
... preparing the parameters...
cs.registerOutParameter(7, oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
ResultSet resultSet = (ResultSet)cs.getObject(outputParamNumber);
rs = new CachedRowSetImpl();
rs.populate(resultSet);
然后我通过RS我的报告。
当我去我的控制面板 - >区域和语言选项 - >格式,并将其设置为英语(美国),一切工作正常,但如果我将它设置为英语(加拿大),我会得到这个异常时执行这一行:
rs.populate(resultSet);
这是例外:
[22/09/14 14:13:25:166 EDT] 00000076 SystemErrřjava.sql.SQLDataException:ORA-01858:非 - 数字字符被发现的地方预计数字 ORA-06512:在“IBMS.PK_COT_BLD_REPORTS”,行4913
这是我的存储过程的第4913行:d_CutOffDate Date:='1-jan-2004';
是否可以配置Oracle会话的格式,使其不依赖操作系统设置?
感谢您的帮助提前。