Oracle
 sql >> Base de données >  >> RDS >> Oracle

Procédure stockée de Spring - les résultats provenant de la procédure sont toujours vides

Le problème ici est que la façon dont Oracle utilise les procédures stockées n'est pas conforme à JDBC. Les SP d'Oracle renvoient des données de jeu de résultats via des paramètres OUT ou des valeurs de retour qui sont des curseurs, et ils doivent être traités spécialement. Cela signifie que vous ne pouvez pas utiliser les éléments JDBC de Spring qui supposent la conformité avec JDBC, vous devez le faire vous-même.

En pratique, cela signifie que vous devez utiliser JdbcTemplate et CallableStatementCallback , ce qui signifie beaucoup plus de codage JDBC manuel que vous ne le souhaiteriez idéalement, mais je n'ai pas encore trouvé de moyen d'éviter cela.

Sur un léger aparté, je soupçonne plutôt que la spécification JDBC a été écrite pour se conformer étroitement à la façon de faire de Sybase (et, par association, SQL Server), car la façon dont les procédures stockées sont gérées dans JDBC convient remarquablement bien à ceux systèmes (et un mauvais ajustement pour Oracle).