Problem polega na tym, że sposób wykonywania procedur przechowywanych przez Oracle nie jest zgodny z JDBC. SP firmy Oracle zwracają dane zestawu wyników za pośrednictwem parametrów OUT lub zwracają wartości, które są kursorami i muszą być obsługiwane w specjalny sposób. Oznacza to, że nie możesz używać żadnego z elementów Spring JDBC, które zakładają zgodność z JDBC, musisz zrobić to sam.
W praktyce oznacza to, że musisz użyć JdbcTemplate
i CallableStatementCallback
, co oznacza o wiele więcej ręcznego kodowania JDBC, niż byś chciał, ale jeszcze nie znalazłem sposobu, aby tego uniknąć.
Na marginesie, raczej podejrzewam, że specyfikacja JDBC została napisana tak, aby była ściśle zgodna ze sposobem działania Sybase (i, przez powiązanie, SQL Server), ponieważ sposób, w jaki procedury składowane są obsługiwane w JDBC, jest wyjątkowo dobre dla tych systemy (i słabe dopasowanie do Oracle).