Вызов сохраненной функции MySQL

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

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

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("");.

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


person Aimad Majdou    schedule 07.06.2013    source источник


Ответы (2)


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

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...!

person Simon    schedule 07.06.2013
comment
Merci, ça fonctionne tres bien :) - person Aimad Majdou; 07.06.2013

Можешь попробовать:

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

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

Полную информацию см. в разделе Функция и хранимая процедура в SQL Server. сравнение между функцией и хранимой процедурой

person Ashish    schedule 07.06.2013