2010-11-23 5 views
4

Nous avons une application utilisant le ressort pour effectuer des appels aux procédures stockées DB2.DB2 JDBC a rompu le printemps appelé Mappage de paramètres

L'application fonctionnait correctement avec jdbc version 1.XX.XX (et DB2 V8). Une mise à niveau récente de DB2 V9 nous pousse à utiliser jdbc versiong 3.58.90 à la place. Cependant, cela semble avoir brisé le mapping des paramètres nommés au printemps (version 2.5.5). Une partie du code de travail avait déjà chaîne appel

call storedproc123(:id,:date) 

lance maintenant des exceptions avec

[jcc][t4][10427][12544][3.58.90] Error parsing FLOAT literal value starting at index 19. Error Detail:Unexpected character ':' found in FLOAT literal. 
... 
ERRORCODE=-4463, SQLSTATE=42601 
... 

Quelqu'un at-il rencontré quelque chose de similaire?

Merci d'avance!

--- modifié pour ajouter plus d'informations ---

J'ai essayé permutant l'ancien jdbc retour après la mise à niveau. L'application fonctionne très bien avec l'ancien pilote, mais nous aimerions passer à la version plus récente car une autre application sur le même serveur a besoin de cette nouvelle version de jdbc, et il est difficile d'avoir différentes versions de la même jdbc sur notre serveur. utilise JBoss).

http://redneckprogrammer.blogspot.com/2009/10/running-multiple-versions-of-oracle.html discuté comment déployer plusieurs versions du même pilote JDBC, mais cela semble être un hack trop et je voudrais l'éviter si possible.

+0

Avez-vous essayé d'exécuter manuellement les mêmes instructions sur votre nouvelle base de données? C'est, êtes-vous sûr que c'est la faute de JDBC? –

+0

Ouais, l'exécution manuelle de la déclaration est bien. Cette erreur est renvoyée avant de passer à l'appel de la base de données. J'ai essayé de passer à l'ancien pilote 1.XX.XX après la mise à niveau, ce qui semble fonctionner correctement, à l'exception de quelques avertissements concernant les métadonnées d'unknwon. – John

Répondre

0

Trouvé la cause, voir IBM patch PK87567.

...

Tous Connectivité: Code du pilote a été amélioré pour soutenir une nouvelle API sur com.ibm.db2.jcc.DB2ParameterMetaData: getParameterMarkerNames, qui retourne une liste de noms de marqueurs paramètres utilisés dans l'instruction SQL en tant que chaîne Cette méthode renvoie la valeur null si la propriété enableNamedParameterMarkers est définie sur DB2BaseDataSource.NOT_SET ou DB2BaseDataSource.NO ou si il n'y a pas de marqueurs de paramètres nommés dans l'instruction SQL. La liste renvoyée contient des noms de marqueurs de paramètres uniques. Si un marqueur de paramètre nommé apparaît plusieurs fois dans l'instruction SQL , il n'apparaîtra qu'une seule fois dans la liste retournée. (120191)

...

résolu le problème en permettant le marqueur.

Questions connexes