Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Procedimento armazenado do Spring - resultados voltando do procedimento sempre vazios


O problema aqui é que a maneira da Oracle de fazer procedimentos armazenados não é compatível com JDBC. Os SPs da Oracle retornam dados do conjunto de resultados por meio de parâmetros OUT ou valores de retorno que são cursores, e eles precisam ser tratados especialmente. Isso significa que você não pode usar nenhum material JDBC do Spring que assume conformidade com o JDBC, você precisa fazer isso sozinho.

Na prática, isso significa que você deve usar JdbcTemplate e CallableStatementCallback , o que significa muito mais codificação JDBC manual do que você gostaria, mas ainda não encontrei uma maneira de evitar isso.

Por um lado, eu suspeito que a especificação JDBC foi escrita para estar em conformidade com a maneira de fazer as coisas do Sybase (e, por associação, do SQL Server), porque a maneira como os procedimentos armazenados são tratados no JDBC é notavelmente adequado para aqueles sistemas (e um ajuste ruim para os da Oracle).