Problemet her er, at Oracles måde at lave lagrede procedurer på ikke er JDBC-kompatibel. Oracles SP'er returnerer resultatsætdata via OUT-parametre eller returnerer værdier, der er markører, og de skal håndteres specielt. Det betyder, at du ikke kan bruge nogen af Springs JDBC-ting, der forudsætter overholdelse af JDBC, du skal gøre det selv.
I praksis betyder det, at du skal bruge JdbcTemplate
og CallableStatementCallback
, hvilket betyder meget mere manuel JDBC-kodning, end du ideelt set ønsker, men jeg har endnu ikke fundet en måde at undgå dette på.
På en lille side, så formoder jeg snarere, at JDBC-specifikationen er skrevet for at passe tæt til Sybase (og, ved tilknytning, SQL Server) måden at gøre tingene på, fordi den måde, lagrede procedurer håndteres på i JDBC, passer bemærkelsesværdigt godt til dem. systemer (og passer dårligt til Oracles).