我想運行一個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會話的格式,使其不依賴操作系統設置?
感謝您的幫助提前。