Comment JDBC pouvez-vous appeler une procédure stockée lorsque seul le réglage de certains paramètres

Quelle est la meilleure façon de faire un appel à une procédure stockée à l'aide de JDBC si vous ne souhaitez définir certains paramètres?

Si j'étais juste à l'aide de SQL, je pourrais définir le paramerers par nom dans le SQL pour appeler la procédure stockée. E. g. si j'ai une procédure stockée avec neuf paramètres et je voulais définir les paramètres 1, 2 et 9, laissant le reste à leurs valeurs par défaut, je peux exécuter cette SQL:

exec my_stored_procedure
    @parameter_1       = "ONE",
    @parameter_2       = "TWO",
    @parameter_9       = "NINE"

À l'aide de JDBC (plus Précisément jConnect 6.0), il semble que lors de l'utilisation d'un CallableStatement, vous devez définir les paramètres par leur index entier, pas de leur nom. Si j'essaie de la créer un CallableStatement pour la procédure stockée, avec 9 paramètres, et uniquement jeu de paramètres 1, 2 et 9, comme ceci:

myStoredProcedureCall = 
  sybConn.prepareCall("{call my_stored_procedure (?, ?, ?, ?, ?, ? , ?, ?, ?)}");
myStoredProcedureCall.setString(1, "ONE");
myStoredProcedureCall.setString(2, "TWO");
myStoredProcedureCall.setString(9, "NINE");
ResultSet paramResults = myStoredProcedureCall.executeQuery();

Puis-je obtenir ce SQLException jeté:

*** SQLException caught ***
SQLState: JZ0SA
Message:  JZ0SA: Prepared Statement: Input parameter not set, index: 2.
Vendor:   0

Pour un peu de fond sur ce que je suis en train de faire, j'ai besoin de créer un processus qui reçoit de l'information sur les produits à partir d'un IBM MQ flux, puis crée un produit dans une 3ème application. La 3ème partie de l'application utilise Sybase pour stocker ses données, et de créer un produit que j'ai besoin d'appeler une procédure stockée qui a environ 130 paramètres. Pour le type de produit, j'ai besoin de créer, à seulement 15 de ces paramètres doivent être définis, le reste sera laissé les valeurs par défaut.

Options que j'ai prises en considération:

  • La création d'une procédure stockée personnalisée qui définit les valeurs que j'ai besoin, puis appelle la 3ème partie du produit de la procédure stockée.
  • Définition de valeurs par défaut pour tous les paramètres en Java.

Il doit sûrement y avoir un moyen plus facile de faire cela?

OriginalL'auteur JonnyWizz | 2012-08-09