Un commentaire dans un CallableStatement flingue les paramètres

Un commentaire dans un CallableStatement flingue les paramètres - Java - Programmation

Marsh Posté le 23-03-2012 à 21:28:50    

Salut,
 
J'ai un stupide appel de procédure stockée dans un CallableStatement d'un programme JDBC :
CallableStatement statement = connection.prepareCall("{call pkgxcard.get_balance (?,?)}" );
 
Marche parfaitement évidemment.
 
Mais si j'essaie d'insérer un commentaire SQL standard :
CallableStatement statement = connection.prepareCall("/* comment */{call pkgxcard.get_balance (?,?)}" );
 
Alors ça marche avec Oracle mais ECHOUE avec MySQL (V-5.1.18) avec:
 
java.sql.SQLException: Parameter number 1 is not an OUT parameter
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
 at com.mysql.jdbc.CallableStatement.checkIsOutputParam(CallableStatement.java:690)
 at com.mysql.jdbc.CallableStatement.registerOutParameter(CallableStatement.java:1881)
 at org.apache.commons.dbcp.DelegatingCallableStatement.registerOutParameter(DelegatingCallableStatement.java:94)
 at db.test.StoredProcedureTest.testBalance(StoredProcedureTest.java:36)
 
Donc manifestement le fait d'ajouter un commentaire /**/ perturbe les parametres du CallableStatement avec MySQL. Est ce que quelqu'un a la moindre idée a ce sujet ?
 
Merci d'avance, @+


---------------
When injustice becomes law, resistance becomes duty (Thomas Jefferson)
Reply

Marsh Posté le 23-03-2012 à 21:28:50   

Reply

Marsh Posté le 24-03-2012 à 02:12:43    

Je me réponds, j'ai 2 contournements possibles :
 
CallableStatement statement = connection.prepareCall("{call /* comment */ pkgxcard.get_balance (?,?)}" );
 
CallableStatement statement = connection.prepareCall("{call pkgxcard.get_balance (?,?)} /* comment */" );
 
Ca n'explique pas le problème, mais ça me permet d'avancer.


---------------
When injustice becomes law, resistance becomes duty (Thomas Jefferson)
Reply

Marsh Posté le 25-03-2012 à 17:28:24    

Question bête.
Pourquoi mettre un commentaire dans un Callable statement ?
Je pense que même si tu avais pas la possibilité d'avoir des traces coté BD, je pense que les commentaires n y seraient pas.
Autant mettres des commentaires avant ton instruction java

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed