# CallableStatement, Stored Procedure in Java



## Diable (15. Mai 2008)

Hallo zusammen,
ich versuche seit einiger Zeit mit Java eine PL/SQL-Procedure bzw. Function anzusprechen.
Diese Function gibt mehrer Columns und Rows (wenn man direkt mit einem SQL-Editor zugreift) zurück.
Leider funktioniert das in meinem Programm nicht wirklich. Hab hier schon Themen durchsucht, aber irgendwie bin ich dabei nicht weitergekommen.

Ich poste euch mal ein Stück von meinem Code.


```
CallableStatement cstmt = connection.prepareCall("{?=call PG_DINGS.F_READ(?, ?, ?, ?, ?, ?, ?, ?)}");
			
cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
cstmt.setString(2, "APL");
cstmt.setString(3, "SERV");
cstmt.registerOutParameter(4, java.sql.Types.VARCHAR);
cstmt.registerOutParameter(5, java.sql.Types.INTEGER);
cstmt.registerOutParameter(6, java.sql.Types.DATE);
cstmt.registerOutParameter(7, java.sql.Types.DATE);
cstmt.registerOutParameter(8, java.sql.Types.VARCHAR);
cstmt.registerOutParameter(9, java.sql.Types.VARCHAR);

ResultSet rs = cstmt.executeQuery();

try {
    while (rs.next()) {
					
    }
} catch (SQLException e) {				
   e.printStackTrace();				
}

rs.close();
cstmt.close();
```


Wenn ich das Programm ausführen will, taucht folgender Stacktrace auf:


```
java.sql.SQLException: ORA-00600: internal error code, arguments: [12259], [], [], [], [], [], [], []

	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
	at oracle.jdbcc7Ioer.processError(TTIoer.java:208)
	at oracle.jdbcc7.Oall7.receive(Oall7.java:543)
	at oracle.jdbcc7C7Protocol.doOall7(TTC7Protocol.java:1451)
	at oracle.jdbcc7C7Protocol.fetch(TTC7Protocol.java:943)
	at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:245)
...
```

Mach ich irgendwie grundlegen etwas falsch? Oder geht dies so gar nicht, was ich vor habe?
Kann man immer nur eine Row bekommen?

Wäre euch sehr dankbar für eure Hilfe. Bin nämlich kurz vorm Verzweifeln

Grüße


----------



## Thomas Darimont (16. Mai 2008)

Hallo,

wie sieht denn die Deklaration deiner PL/SQL Procedure aus?
schau mal hier:
http://www.tutorials.de/forum/java/294729-oracle-pl-sql-funktion-aus-java-aufrufen.html

Gruß Tom


----------

