Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Spring's Stored Procedure - Ergebnisse, die von der Prozedur zurückkommen, sind immer leer

Das Problem dabei ist, dass die Art und Weise, wie Oracle gespeicherte Prozeduren durchführt, nicht JDBC-kompatibel ist. Die SPs von Oracle geben Ergebnisdaten über OUT-Parameter oder Rückgabewerte zurück, die Cursor sind, und müssen speziell behandelt werden. Das bedeutet, dass Sie kein JDBC-Zeug von Spring verwenden können, das die Einhaltung von JDBC voraussetzt, Sie müssen es selbst tun.

In der Praxis bedeutet dies, dass Sie JdbcTemplate verwenden müssen und CallableStatementCallback , was viel mehr manuelle JDBC-Codierung bedeutet, als Sie idealerweise möchten, aber ich muss noch einen Weg finden, dies zu vermeiden.

Abgesehen davon vermute ich eher, dass die JDBC-Spezifikation so geschrieben wurde, dass sie eng mit der Vorgehensweise von Sybase (und damit verbunden mit SQL Server) übereinstimmt, da die Art und Weise, wie gespeicherte Prozeduren in JDBC behandelt werden, bemerkenswert gut zu diesen passt Systeme (und eine schlechte Passform für Oracle).