Получение возвращаемого значения от JDBC MSSQL

Я соединяюсь с SQL Server (2005) через Java с помощью Драйвера 2.0 JDBC Microsoft SQL Server.

Как я получаю возвращаемое значение из хранимой процедуры? Я делаю что-то как:

Connection connection = dataSource.getConnection()
CallableStatement proc = connection.prepareCall("{ call dbo.mySproc() }");
proc.execute();

Я должен использовать, выполняются ()? executeQuery ()? executeUpdate ()? Ни один из них, кажется, не возвращает возвращаемое значение по умолчанию, но я не действительно уверен, как добраться до него.

РЕДАКТИРОВАНИЕ 1: Чтобы быть ясным, я знаю, как назвать хранимые процедуры. Этот вопрос конкретно о том, как получить ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ (в противоположность Набору результатов). Возвращаемое значение является целым числом, которое обычно сгенерировано, когда Вы выполняете запрос без Набора результатов или если Вы конкретно заявляете что-то как RETURN 0 в Вашем SQL.

РЕДАКТИРОВАНИЕ 2: executeUpdate () возвращает интервал, но этот интервал не является тем же как Возвращаемым значением. Кроме того, параметр не является тем же как возвращаемым значением.

12
задан Vadzim 3 June 2014 в 14:01
поделиться

2 ответа

Bozho's 2-й пересмотренный ответ был близок, но не совсем там. Однако это привело меня к ответу.

На примере кода, с которого я начал, мы закончили на:

CallableStatement proc = connection.prepareCall("{ ? = call dbo.mySproc() }");
proc.registerOutParameter(1, Types.INTEGER);
proc.execute();
int returnValue = proc.getInt(1);

Ключевыми элементами здесь являются "? =" перед "вызовом" в функции prepareCall, которая устанавливает место для возвращаемого значения и registerOutputParameter. Он должен быть зарегистрирован как целое число, так как возвращаемое значение всегда является int (по крайней мере, в SQL Server, возможно, в других БД оно отличается). Поэтому его нужно получить, используя getInt. Я протестировал этот метод и он действительно работает.

.
36
ответ дан 2 December 2019 в 03:54
поделиться
c.prepareCall("? = ..");
cs.execute();
String returnedValue = cs.getString(1);

(или метод соответствующего типа. Вы можете использовать getObject альтернативно)

Из старого учебника по началу работы

методы getXXX в CallableStatement получают значения из OUT-параметров и/или возвращают значение хранимой процедуры.

(Btw, ссылки, предоставленные Умешем, содержали подобную информацию)

.
2
ответ дан 2 December 2019 в 03:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: