我嘗試通過Java從資料庫Oracle收集一些資訊。
我執行的字串是:
String sql="SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=? ";
try (PreparedStatement pst=connection.prepareStatement(sql)
{
pst.setInt(1,Integer.parseInt(stringDateThatGetsFromUser))
try(ResultSet rs=pst.executeQuery()){ //throws exception
.......
}}
拋出的例外是
java.sql.SQLDataException: ORA-01843: 無效月份
引起:錯誤:1843,位置:1440,Sql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=:1,OriginalSql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=?,錯誤訊息 = ORA-01843:無效月份
我設定的參考月份示例是“202101”。在 Oracle 中,它是 NUMBER(10) 資料型別而不是 DATE。
我還嘗試按照有關“無效月份”的其他帖子的建議執行。
connection.createStatement().execute("alter session set NLS_DATE_FORMAT='YYYYMM'");
例外更改為:
引起:錯誤:1858,位置:1440,Sql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=:1,OriginalSql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=?,錯誤訊息 = ORA-01858:發現非數字字符的地方數字是預期的
我也用 setString 嘗試過 TO_NUMBER(?,'999999')。和之前一樣的錯誤。
當我通過 Oracle 以下執行時,它運行正常。
SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH='202101';
***更新
我不知道為什么,但這可以通過 Java 作業,但結果為零。
String sql="SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH='20210101'";
uj5u.com熱心網友回復:
案件結案。我們發現了錯誤。對于兩列中的某些值,未正確修改資料庫中表的 sql 代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/321353.html
上一篇:以字串格式顯示電影描述
