2015-12-11 3 views
2

Я пытаюсь запустить некоторые обновления и в конечном итоге вернуть некоторый результат, который я могу использовать, но результат всегда равен нулю. Мой кодjdbc ResultSet is null

PreparedStatement preparedStatement = aConnection.prepareStatement(script); 
boolean results = preparedStatement.execute(); 

Если мой запрос

BEGIN     
    Declare @MyLog as varchar(max) = '---------------------- ' 
     + CHAR(10) + CHAR(10)    
    BEGIN   
     BEGIN TRAN  

     UPDATE MPRN SET K4101 = 'N' 
     select * from HELD_FLOW 

     COMMIT TRAN 

    END     
END 

оператор не возвращает никаких значений. Однако, если мой запрос

BEGIN     
    Declare @MyLog as varchar(max) = '---------------------- ' 
     + CHAR(10) + CHAR(10)    
    BEGIN   
     BEGIN TRAN  
     select * from HELD_FLOW 
     UPDATE MPRN SET K4101 = 'N' 


     COMMIT TRAN 

    END     
END 

все значения возвращаются! Итак, порядок обновления и выбора вопросов! Я хочу обновить некоторые значения первого и, наконец, вернуть некоторый вывод, что и в 1-ом примере, который не работает ...

+0

Почему 'result' Тип' boolean'? – Rehman

+0

просто проверяет, является ли результат истинным или ложным (есть ли результирующий набор или нет) – george

+0

Добавление 'SET NOCOUNT ON;' в начале вашего скрипта, вероятно, поможет. –

ответ

3

Это все в javadoc:

Метод execute выполняет инструкцию SQL и указывает форма первый результат. Затем вы должны использовать методы getResultSet или getUpdateCount для извлечения результата и getMoreResults для перехода к любым последующим результатам.

Ваша процедура возвращает несколько результатов, execute показывает тип первого. В первом примере первым результатом является количество обновлений, во втором - результат, поэтому вы получаете false и true соответственно.

Чтобы обработать оставшиеся результаты и найдите ResultSet, необходимо использовать getMoreResults.