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