Gespeicherte Prozedur Aus param durch Java

Habe ich unten stored proc:

CREATE OR REPLACE PROCEDURE "demo"."run_demo"(v_sql IN VARCHAR2, return_code OUT number)
AS

i number;

BEGIN
return_code := 0;
execute immediate v_sql;
i := sql%rowcount;

    IF (i<1)
    THEN return_code := 1;
END IF;

EXCEPTION  
    WHEN OTHERS THEN
    return_code := SQLCODE;
END;

Ich versuche, es zu nennen, von Java wie unten gezeigt:

public static void main(String[] args) {
    try {
        Class.forName("oracle.jdbc.OracleDriver");      
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@10.10.10.10:1521:demo", "demo_app", "demo");

        CallableStatement cs = conn.prepareCall("{call demo.run_demo(?)}");
        cs.registerOutParameter(1, Types.INTEGER);
        cs.setString(1, "update demo.users set locale=''english'' where user_id = 2");

        cs.execute();

        System.out.println("out="+cs.getInt(1));
    } catch (Exception e) {         
        e.printStackTrace();
    }
}

Aber seine Rückkehr Fehler

"Parameter-Typ-Konflikt".

Kann einer mir sagen, was ist falsch?

Ebenfalls, wie kann ich zurück zusätzliche return_string in stored proc enthalten würde, oracle-Fehlermeldung (kann eine kurze Beschreibung der Fehlermeldung)?

Dank!

  • Wie es aussieht, fehlt ein parameter. Wenn Sie gesucht haben, SO haben Sie dies gefunden: stackoverflow.com/questions/2585550/...
  • Ich habe versucht, hinzufügen ? = Aufruf demo.run_demo(?) aber das hat auch nicht geholfen. Kann einer mir bitte helfen?
  • Versuchen Sie cs.registerOutParameter(1, Types.DECIMAL); anstelle von cs.registerOutParameter(1, Types.INTEGER);
InformationsquelleAutor Mike | 2011-12-21
Schreibe einen Kommentar