error : ORA-01858: ein nicht numerisches Zeichen wurde gefunden, wo ein numerisches erwartet wurde

Wenn ich Sie ausführen, meine vorbereitete Erklärung, ich bin immer die ORA-01858: a non-numeric character was found where a numeric was expected. Wenn ich gesucht, durch manche Foren sagen Sie, dass es ist, weil der date-Datentyp. Meine vorbereitete Anweisung ist

insert  into OPRS_ZONES(
  ZONE_ID,
  ZONE_CODE,
  ZONE_NAME,
  PLACE_ID,
  CORP_ID,
  CREATED_BY,
  CREATED_DATE,
  MODIFIED_BY,
  MODIFIED_DATE) 
values(?,?,?,?,?,?,?,?,?)

Die Werte, die ich versuche zu legen sind

03.0, 
'FLORIDA', 
'FLORIDA', 
05231.0, 
01.0, 
01.0, 
TO_DATE('19102012130639','DDMMYYYYHH24MISS'), 
NULL, 
NULL

Tabelle Definition

CREATE TABLE OPRS_ZONES ( 
  ZONE_ID NUMERIC(20,0) , 
  ZONE_CODE VARCHAR2(16) , 
  ZONE_NAME VARCHAR2(255) , 
  PLACE_ID NUMERIC(20,0) , 
  CORP_ID NUMERIC(20,0) , 
  CREATED_BY NUMERIC(20,0) , 
  CREATED_DATE DATE , 
  MODIFIED_BY NUMERIC(20,0) , 
  MODIFIED_DATE DATE );

Den code, wo ich bin, bevölkern die Werte für eine vorbereitete Anweisung

public int executePreparedStatement(String query, List myCollection, int colLength, String tableName) throws DBException,SQLException {

        int rowsAffected    = 0; 
        int [] noOfRowsExecuted = null;
        try{
            conn.setAutoCommit(false);
            if(query != null){  
                ps = conn.prepareStatement(query);
                for (int i = 0; i < myCollection.size(); i++) {
                    logger.info("@@mycollcetion -- "+myCollection.get(i));
                    List list = (List) myCollection.get(i);
                    int count = 1;
                    for (int j = 0; j < list.size(); j++) {
                        ps.setObject(count, list.get(j));
                        count++;
                    }
                    ps.execute();
                    logger.info("@@ noOfRowsExecuted == "+noOfRowsExecuted);
                }
            }
        }catch(Exception e){
            logger.error("Error in the execution of Prepared Statement: \n" + query + "\nData : " + listData, e);
            rowsAffected    = Utility.getErrorCode(e);
            throw new DBException(e);
        }finally{ 
            try {
                if (ps != null) {
                    ps.close();
                    ps = null;
                }
            } catch (Exception e) {
            }
            rowsAffected    = 0; 
            noOfRowsExecuted = null;
        }
        return rowsAffected;        
    }

Den list myCollection enthält die values. Die variabele query ist die prepared statement
Diese vorbereitete Erklärung, wenn ersetzt mit den Werten funktioniert in SQLDEVELOPER, aber wenn ich Sie durch mein java-Programm, das ich immer Fehler. Ist das wirklich das problem mit Datumsformat ? wenn dem so ist, warum ist es in Ordnung, die in SQLDEVELOPER ?

Bitte helfen,

Dank

Post CREATE TABLE Anweisung für OPRS_ZONES
Ich habe versucht, die Umwandlung von Datum in TIMESTAMP und auch versucht, das "CAST" aber immer noch der gleiche Fehler 🙁
Warum die führenden Nullen auf alle zahlen?
Auch, warum die .0 - suffix auf, was sollen die ganzen zahlen?
Das ist, wo das problem ist, dass Java keine Ahnung, was TO_DATE, es erwartet numerischer Wert statt. Allerdings BigMake schon beantwortet also werde ich nicht machen doppelten post.

InformationsquelleAutor Srikanth Sridhar | 2012-10-22

Schreibe einen Kommentar