|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Fabrizio LeonardoDéveloppeur Web Inscription : septembre 2011 Messages : 5 ![]() |
Hello,
J'avais posté ce post dans la partie Hibernate du forum mais je pense en fin de compte qu'il s'agit plus d'un problème avec JDBC. Hibernate me permet, dans ce cas-ci, de faire appel à JDBC grâce à l'objet Connection. J'ai quelques soucis en ce qui concerne l'appel d'une stored procedure sur une base de donnée Oracle. Il existe dans ma DB une procédure prenant en compte une cinquantaine de paramètres en entrée et 2 valeurs de retour (en fait les 2 derniers paramètres sont en INOUT). J'essaie tant bien que mal d'exécuter cette procédure mais sans succès. Une NullPointerException apparait lors de l'appel à transaction.execute(). Etant complètement novice, je ne vois pas du tout d'où cela pourrait venir. Il me semble que la procédure est effectivement trouvée car lorsque je retire des paramètres, une exception apparait indiquant que le nombre de paramètres est faux. Voici le code: Code :
Pour la précision, le driver ojdbc utilisé est le suivant: 11.2.0.2.0. Voici une partie de l'exception reçue: Code :
|
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Développeur java, access, sql server Inscription : octobre 2005 Messages : 851 ![]() |
à première vue, un des paramètres est null
fait un System.out.println sur chaque paramètre pour voir
__________________
D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser. First, make it work. Then, make it fast. Finally, make it user-friendly. Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Fabrizio LeonardoDéveloppeur Web Inscription : septembre 2011 Messages : 5 ![]() |
Il y avait un effectivement un paramètre que je n'avais pas initialisé mais cela n'a pas résolu mon souci
La plupart des paramètres sont des VARCHAR (String) que je dois initialiser à "" (chaîne vide), j'imagine que ce n'est pas la cause du problème ? |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Développeur java, access, sql server Inscription : octobre 2005 Messages : 851 ![]() |
Bon, je ne connais pas Oracle, mais je vois que la ligne qui déclenche le problème est "oracle.jdbc.driver.T4CCallableStatement.getNumRows"
Il est possible qu'il y ai un problème de nombre de lignes exécutées/retournées. Essaye la procédure en dehors de java pour s'assurer qu'elle fonctionne bien avec exactement les mêmes paramètres
__________________
D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser. First, make it work. Then, make it fast. Finally, make it user-friendly. Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich. |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Fabrizio LeonardoDéveloppeur Web Inscription : septembre 2011 Messages : 5 ![]() |
Après des heures et des heures où je suis tourné en rond, voilà là solution !
La procédure possédait les 2 derniers paramètres comme étant IN OUT. Il ne faut donc pas les gérer comme des paramètres OUT (comme je le croyais). Récupérer des paramètres OUT reviendrait à faire: Code :
CallableStatement call = connection.prepareCall("{?, ? = call bksgnvcrm.createorreturnproduct1nc(..., ?, ?)}"); Code :
CallableStatement call = connection.prepareCall("{call bksgnvcrm.createorreturnproduct1nc(..., ?, ?)}"); Code :
J'espère que ceci pourra aider d'autres personnes |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com