2013-06-07 2 views
3

Я создал хранимую функцию verifierQteDemandee в моей базе данных, которая имеет целочисленный параметр numBonIn, который возвращает логическое значение.Вызов хранимой функции MySQL

Я хочу выполнить эту функцию в своей программе java, я искал ее в google, и все, что я могу найти, это выполнить хранимую процедуру, однако я предположил, что выполнение хранимой функции такое же, как выполнение хранимой процедуры, и это код, который я попробовал:

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);; 

переменная con является анс экземпляр Connection.

Как вы можете заметить в моем коде я не "знаю, как я получаю возвращенное значение из этой сохраненной функции в этой строке:. int outputValue = cStmt.getInt("");

Пожалуйста, если кто-то знает, как получить возвращаемое значение процедуры, я будете благодарны

ответ

7

Попробуйте это:.

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

Ça devrais fonctionner ...

+0

Merci, ça fonctionne Tres Bien :) –

+0

Ça свершившихся Плезирами Aimad! – Simon

2

Вы можете попробовать:

CallableStatement cstmt = con.prepareCall("{call verifierQteDemandee(?)}"); 
cstmt.registerOutParameter(1,Type.Boolean); 
cstmt.setInt("numBonIn", 42); 
cstmt.execute(); 
bool outputValue = cstmt.getBoolean(1); 

В качестве побочного я не ожидал получить набор результатов из функции sql! Я бы ожидать, скалярное значение в качестве вывода из моей функции SQL

Пожалуйста, обратитесь к Function vs. Stored Procedure in SQL Server для полного сравнения между функцией и хранимой процедурой

Смежные вопросы