sql >> Databasteknik >  >> RDS >> Oracle

Vårens lagrade procedur - resultat som kommer tillbaka från proceduren är alltid tomma

Problemet här är att Oracles sätt att göra lagrade procedurer inte är JDBC-kompatibelt. Oracles SP:er returnerar resultatuppsättningsdata via OUT-parametrar eller returvärden som är markörer, och de måste hanteras speciellt. Det betyder att du inte kan använda någon av Springs JDBC-grejer som förutsätter överensstämmelse med JDBC, du måste göra det själv.

I praktiken betyder det att du måste använda JdbcTemplate och CallableStatementCallback , vilket innebär mycket mer manuell JDBC-kodning än vad du helst skulle vilja, men jag har ännu inte hittat något sätt att undvika detta.

På ett litet åsido så misstänker jag snarare att JDBC-specifikationen skrevs för att överensstämma med Sybase (och, genom associering, SQL Server) sätt att göra saker på, eftersom hur lagrade procedurer hanteras i JDBC är en anmärkningsvärt bra passform för de system (och en dålig passform för Oracles).



  1. 3 sätt att få språket för den aktuella sessionen i SQL Server (T-SQL)

  2. SQL Server Hög tillgänglighet:Lägg till ny disk till en befintlig failover-klusterinstans

  3. PostgreSQL:mellan med datetime

  4. Hur man delar DATE och TIME från DATETIME i MySQL