Comment appeler Sybase procédure stockée avec des paramètres nommés à l'aide de JDBC
J'ai une procédure stockée dans Sybase qui je peux appeler depuis mon préféré client SQL comme ceci:
exec getFooBar @Foo='FOO', @Bar='BAR'
Elle retourne un tableau de résultats, si c'est comme une requête. Il a fait beaucoup de paramètres, mais je ne veux appeler avec des Foo et parfois avec des Foo et Bar spécifié.
Sybase ASE est 15.0, je suis à l'aide de jConnect 6.0.5.
Je peux invoquer ce à l'aide d'un PreparedCall
si je ne spécifier que le premier paramètre:
CallableStatement cs = conn.prepareCall("{call getFooBar(?) }");
cs.setString(1,"FOO");
Cependant je ne peux pas utiliser le @Foo
notation de passer mes params:
conn.prepareCall("{call getFooBar @Foo='FOO' }");
conn.prepareCall("call getFooBar @Foo='FOO' ");
conn.prepareCall("{call getFooBar @Foo=? }"); // + setString(1,'FOO')
Dans tous ces cas-je obtenir exception de la DB de me dire que le paramètre Foo est prévu:
com.sybase.jdbc3.jdbc.SybSQLException: Procedure getFooBar expects
parameter @Foo, which was not supplied
Idéalement, j'aimerais le faire avec Printemps JdbcTemplate
ou SimpleJdbcCall
, mais avec ceux que je ne pouvais même pas en arriver au point où je pouvais avec un bon vieux JDBC.
Donc, pour résumer, j'aimerais éviter de se retrouver avec:
{ call getFooBar(?,null,null,null,null,null,?,null,null) }
Est-ce possible à l'aide de JDBC ou mieux de Printemps?
OriginalL'auteur jabal | 2013-12-21
Vous devez vous connecter pour publier un commentaire.
Pas la solution la plus efficace, mais, avez-vous essayé d'utiliser la Déclaration simple avec EXEC.
par exemple.
String mySql = "EXEC getFooBar @Foo='FOO', @Bar='BAR'";
ResultSet rs = conn.getConnection().createStatement().executeQuery(mySql);
OriginalL'auteur Subbu