2013-06-07 4 views
3

J'ai créé une fonction enregistrée verifierQteDemandee dans ma base de données qui a un paramètre entier numBonIn, qui renvoie une valeur booléenne. Je veux exécuter cette fonction dans mon programme java, je l'ai googlé et tout ce que je peux trouver est d'exécuter une procédure stockée, mais je suppose que l'exécution d'une fonction stockée est la même que l'exécution d'une procédure stockée, et cela est le code que j'ai essayé:Appelez la fonction MySQL stockée

CallableStatement cStmt = con.prepareCall("{call verifierQteDemandee(?)}"); 
      cStmt.setInt("numBonIn", 42); 
      boolean hadResults = cStmt.execute(); 
      if (hadResults) { 
       ResultSet rs = cStmt.getResultSet(); 
      } 
      Boolean outputValue = cStmt.getBoolean(outputValue);; 

la variable est con ans instance de Connection.

Comme vous pouvez le remarquer dans mon code je ne «sais pas comment je reçois la valeur retournée par cette fonction stockée dans cette ligne:. int outputValue = cStmt.getInt("");

S'il vous plaît, si quelqu'un sait comment obtenir la valeur retournée la procédure, je serez reconnaissants

Répondre

7

essayez ceci:.

CallableStatement cStmt = con.prepareCall("{? = call verifierQteDemandee(?)}"); 
cStmt.registerOutParameter(1,java.sql.Types.BOOLEAN); 
cStmt.setInt(2, 42); 
cStmt.execute(); 
Boolean outputValue = cStmt.getBoolean(1); 

... trabalho Ça devrais

+0

Merci, ça tres bien :) Fonctionne –

+0

Ça fait plaisir Aimad! – Simon

2

Vous pouvez:En tant que sidenote, je ne m'attendrais pas à obtenir un resultset à partir d'une fonction SQL! Je me attends à une valeur scalaire en sortie de ma fonction sql

S'il vous plaît se référer à Function vs. Stored Procedure in SQL Server pour une comparaison complète entre la fonction et la procédure stockée

Questions connexes