Un commentaire dans un CallableStatement flingue les paramètres - Java - Programmation
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.
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
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)