Oracle PLSQL Block Fehler

dior

Bekanntes Mitglied
Hallo,

ich versuche einen plsql Befehl aus meinem Java Programm an meine Oracle DB zu schicken aber in meinem Try Catch geht er mir immer in die SQLException...

Hier mein Code:

Java:
conn = DriverManager.getConnection("jdbc:oracle:thin:@xxxxx.xxxxx.xxxx:1521:xxxx", "xxxxx", "xxxxxx");
      conn.setAutoCommit(false);
       // JOptionPane.showMessageDialog(null, conn) ;  // Testmessage

        Statement stmt = conn.createStatement();
               
          try {
                         
          String plsql =  
               "DECLARE " +
                  "N_JOBID_SEQ NUMBER; " +
                  "S_OWNER VARCHAR2(30) := 'Testuser'; " +
                  "S_DESCRIPTION VARCHAR2(50) := 'desctu'; " +
                  "BEGIN " +
                  "SELECT IDENTIFIER.NEXTVAL INTO N_JOBID_SEQ FROM DUAL; " +
                  "INSERT INTO JOB(IDENTIFIER,DESCRIPTION,OWNER,CREATION,JOBCLASS) VALUES (N_JOBID_SEQ, S_DESCRIPTION, S_OWNER, SYSDATE, 1); " +
                  "LTT_ADMIN.CREATEJOB (N_JOBID_SEQ, FALSE); END; " +
                  "/ " +
                  "COMMIT; ";
           System.out.println(plsql);
           CallableStatement cs = conn.prepareCall(plsql); 
          
           //cs.executeQuery(plsql);
           cs.execute();  
           
              
              
              JOptionPane.showMessageDialog(null, "Job angelegt; Testmsg") ;
              
    

         
            
        } catch (SQLException e) {
           
            System.out.println(stmt + "tetetete");
            JOptionPane.showMessageDialog(null, "SQL Fehler beim Job anlegen") ;
            
        } finally {
            conn.close();
            
        }

wenn ich den plsql String nehme den ich mir im println ausgeben lasse und ihn auf der Datenbank teste funktioniert es wunderbar, es dürfte also nicht am plsql String liegen!
 
Vielleicht liegt es an dem fehlenden Zeilenumbrüchen .
Das heißt :

Java:
String plsql =  
               "DECLARE \n" +
..

P.S Fehlermeldung posten
 
Zuletzt bearbeitet:
Das ist ja das Problem, es gibt keine Fehlermeldung´. Er springt mir sofort in die Catch Anweisung....

ich finde auch in google praktisch keine Beispiele...
 
Zuletzt bearbeitet:
Wie wärs du lässt dir in deinem catch die Fehlermeldung ausgeben?

Java:
} catch (SQLException e) {
	e.printStackTrace();
}

dabei fällt mir grad auf, CallableStatement wird mit executeQuery ausgeführt, nicht execute, du solltest wohl die zwei Zeilen (auskommentierung) umtauschen. Außerdem liefert cs 1+ ResultSet Objekte. Das vermisse ich bei dir auch
 
Zuletzt bearbeitet:
Danke, an das habe ich nicht gedacht!

Anscheinend macht der / ein Problem....


java.sql.SQLException: ORA-06550: Zeile 10, Spalte 1:
PLS-00103: Fand das Symbol "/"

oracle.jdbc.driver.OracleStatementWrapper@6f039725 -> Error Meldung
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:457)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:400)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:926)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:476)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:200)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:543)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:208)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1416)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1757)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:2006)
 
Ja stimmt, hab ich auch schon weggetan und es geht... bin nur nicht früher dazugekommen zum schreiben!

Aber warum geht der / nicht... ist bei plsql ja eigentlich standard bzw. notwendig...
 

Zurück
Oben