Frage

Ich habe eine Methode, die gleichzeitig mit dem Einfügen in Oracle eine Oracle-Prozedur aufruft. Die Einfügeanweisung funktioniert, die Prozedur jedoch nicht.Ich erhalte keine Fehlermeldungen.Kann jemand sehen, warum das nicht funktioniert?

Class.forName("oracle.jdbc.driver.OracleDriver");
String connectionString = "jdbc:oracle:thin:@" + oracle_ip_address + ":" + oracle_db_port + ":" + oracle_db_sid;
Connection conn = DriverManager.getConnection(connectionString, oracle_db_username, oracle_db_password);

ResultSet rs = stmt.executeQuery("Select * from Dropper"); 

CallableStatement cs = conn.prepareCall("{ call TTMS.job_vacationconflict_notify(?,?,?)}");

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");

    Statement stmt2 = conn.createStatement();

    while (rs.next()){
        String di = rs.getString("DROPPER_ID");
        String sd = rs.getString("BEGIN_DT").replace(" 00:00:00.0", "");
        String ed = rs.getString("END_DT").replace(" 00:00:00.0", "");
        String vi = rs.getString("VACATION_ID");
        String md = rs.getString("MODIFY_DT").replace(" 00:00:00.0", "");

        query = "INSERT INTO DROPPER_VACATIONS(DROPPER_ID, BEGIN_DT, END_DT, CREATE_DT, CREATE_BY, MODIFY_DT, MODIFY_BY, COMMENTS, VACATION_ID) "
        + "VALUES ('"+di+"',to_date('"+sd+"','YYYY-MM-DD'),to_date('"+ed+"','YYYY-MM-DD'),sysdate,'MJRUTLED',to_date('"+md+"','YYYY-MM-DD'),'MJRUTLED','','"+vi+"')";

        stmt2.executeUpdate(query);

        cs.setInt(1,Integer.parseInt(di));
        cs.setString(2,sdf.parse(sd).toString());
        cs.setString(3,sdf.parse(ed).toString());

        cs.execute();
    }
War es hilfreich?

Lösung

Erwartet Ihr Verfahren Datumsangaben als Eingabe?Wenn dies der Fall ist, versuchen Sie, Datumswerte zu übergeben und verlassen Sie sich nicht auf eine implizite Konvertierung.Wenn der SP Zeichenfolgen erwartet, stellen Sie sicher, dass Sie die Datumsangaben genauso formatieren, wie der SP es erwartet (fügen Sie Debug-Druck auf beiden Seiten hinzu, dbms_output Und dbms_pipe sind deine Freunde).

Bitte erwägen Sie auch die Verwendung von Parameterersetzungen für query;diesen Code bittet für SQL-Injection %)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top