Vấn đề ở đây là cách thức thực hiện các thủ tục được lưu trữ của Oracle không tuân theo JDBC. Các SP của Oracle trả về dữ liệu tập kết quả thông qua tham số OUT hoặc trả về giá trị là con trỏ và chúng phải được xử lý đặc biệt. Điều này có nghĩa là bạn không thể sử dụng bất kỳ nội dung JDBC nào của Spring giả định tuân thủ JDBC, bạn phải tự mình làm điều đó.
Trong thực tế, điều này có nghĩa là bạn phải sử dụng JdbcTemplate
và CallableStatementCallback
, có nghĩa là viết mã JDBC thủ công hơn nhiều so với những gì bạn muốn, nhưng tôi vẫn chưa tìm ra cách để tránh điều này.
Nói một chút sang một bên, tôi nghi ngờ rằng thông số kỹ thuật JDBC được viết để tuân thủ chặt chẽ với cách hoạt động của Sybase (và, theo liên kết, SQL Server), bởi vì cách xử lý các thủ tục được lưu trữ trong JDBC là rất phù hợp cho những hệ thống (và không phù hợp với Oracle).