sql >> Database >  >> RDS >> Oracle

Spring's Stored Procedure - resultaten die terugkomen van de procedure zijn altijd leeg

Het probleem hier is dat Oracle's manier om opgeslagen procedures uit te voeren niet JDBC-compatibel is. De SP's van Oracle retourneren resultaatsetgegevens via OUT-parameters of retourneren waarden die cursors zijn, en ze moeten speciaal worden behandeld. Dit betekent dat je geen van Spring's JDBC-dingen kunt gebruiken die naleving van JDBC veronderstellen, je moet het zelf doen.

In de praktijk betekent dit dat u JdbcTemplate . moet gebruiken en CallableStatementCallback , wat veel meer handmatige JDBC-codering betekent dan je idealiter zou willen, maar ik heb nog geen manier gevonden om dit te vermijden.

Even terzijde, ik vermoed eerder dat de JDBC-specificatie is geschreven om nauw te voldoen aan de Sybase (en, door associatie, SQL Server) manier om dingen te doen, omdat de manier waarop opgeslagen procedures worden afgehandeld in JDBC opmerkelijk goed geschikt is voor die systemen (en een slechte pasvorm voor die van Oracle).



  1. Algemene fout:OS-versie komt niet overeen

  2. Een overzicht van JSON-mogelijkheden binnen PostgreSQL

  3. MySQL hoofdlettergevoelige zoekopdracht

  4. Wat is de SQL-verbindingsreeks die ik moet gebruiken om toegang te krijgen tot localhost\SQLEXPRESS met Windows-verificatie of SQL-verificatie?