sql >> Base de Datos >  >> RDS >> Oracle

Procedimiento almacenado de Spring:los resultados que regresan del procedimiento siempre están vacíos

El problema aquí es que la forma en que Oracle realiza los procedimientos almacenados no es compatible con JDBC. Los SP de Oracle devuelven datos de conjuntos de resultados a través de parámetros OUT o valores de retorno que son cursores, y deben manejarse de manera especial. Esto significa que no puede usar ninguna de las cosas de JDBC de Spring que asumen el cumplimiento de JDBC, debe hacerlo usted mismo.

En la práctica, esto significa que debe usar JdbcTemplate y CallableStatementCallback , lo que significa mucha más codificación JDBC manual de la que le gustaría, pero todavía tengo que encontrar una manera de evitar esto.

Dejando un poco de lado, sospecho que la especificación JDBC se escribió para ajustarse estrechamente a la forma de hacer las cosas de Sybase (y, por asociación, SQL Server), porque la forma en que se manejan los procedimientos almacenados en JDBC es una muy buena opción para aquellos sistemas (y un mal ajuste para los de Oracle).