Ich muss eine Oracle-Prozedur mit einem IN-Parameter mit VARCHAR2 und OUT-Parameter als BOOLEAN-Datentyp aufrufen.JDBC - Retrieve boolesche Ausgabe von Oracle Prozedur
Unten ist mein Code SimpleJdbcCall
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(getTemplate())
.withCatalogName("package_name")
.withProcedureName("proc_name")
.withoutProcedureColumnMetaDataAccess()
.declareParameters(
new SqlParameter ("userName", Types.VARCHAR),
new SqlOutParameter("status", Types.BOOLEAN)
);
Map<String, Object> inParams = new HashMap<String, Object>();
inParams .put("userName", userInput);
Map<String, Object> outputValue= jdbcCall.execute(inParams);
Ausnahme: CallableStatementCallback; nicht kategorisierte SQLException für SQL [{Aufruf PACKAGE_NAME.PROC_NAME (?,?)}]; SQL-Status [99999]; Fehlercode [17004]; Ungültiger Spaltentyp: 16; verschachtelte Ausnahme ist java.sql.SQLException: Ungültige Spaltentyp: 16
Nach einem Recherchen fand ich, dass „JDBC-Treiber die Weitergabe von Booleschen Parameter PL/SQL gespeicherte Prozeduren nicht unterstützen“
Es wurde vorgeschlagen, die PL/SQL-Prozedur mit einer zweiten PL/SQL-Prozedur zu umbrechen. Das Hauptproblem ist, dass ich für den Schreibzugriff in der Datenbank eingeschränkt bin, da dies Client-Daten sind. Bitte helfen Sie mir, dieses Problem zu beheben.
Einige der Links verwiesen i
- https://docs.oracle.com/cd/F49540_01/DOC/java.815/a64685/tips3.htm
- https://community.oracle.com/thread/2139408?tstart=0
- https://community.oracle.com/thread/887712?tstart=0
- https://community.oracle.com/thread/975159?tstart=0
- Stored Function - Sending/Receiving Boolean - BD
- http://docs.oracle.com/cd/B28359_01/java.111/b31224/apxtblsh.htm#i1005380
Danke für Ihren Hinweis auf Dokumentation :-) –