Проблемът тук е, че начинът на Oracle за извършване на съхранени процедури не е съвместим с JDBC. SP на Oracle връщат данни за набор от резултати чрез OUT параметри или връщат стойности, които са курсори, и те трябва да се обработват специално. Това означава, че не можете да използвате нищо от JDBC неща на Spring, които предполагат съответствие с JDBC, трябва да го направите сами.
На практика това означава, че трябва да използвате JdbcTemplate
и CallableStatementCallback
, което означава много повече ръчно JDBC кодиране, отколкото бихте искали в идеалния случай, но все още не съм намерил начин да избегна това.
От друга страна, по-скоро подозирам, че спецификацията на JDBC е написана, за да съответства тясно на Sybase (и, по асоциация, SQL Server) начин за правене на нещата, защото начинът, по който съхранените процедури се обработват в JDBC, е изключително подходящ за тези системи (и неподходящи за Oracle).