Показать сообщение отдельно
Старый 20.01.2009, 14:36   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Хранимые процедуры вполне нормально возвращают результаты (запросы). Однако есть некоторые "тонкости".

1. Дело в том, что ряд команд SQL-сервера возвращают нечто вроде "отчета" об успешном своем выполнении. В данном случае, вероятно, команда

X++:
SET LANGUAGE N'русский'
Т.е. факт выполнения этой команды привел к выдаче сообщения

Цитата:
Параметры языка изменены на "русский"
Это сообщение было воспринято как возвращаемый результат и передано в ResultSet. Но, поскольку это значение не является ResultSet, то на стороне клиента это вызвало ошибку.

Чтобы избежать подобных недоразумений необходимо первой командой внутри хранимой процедуры сделать такую настройку

X++:
SET NOCOUNT ON
Эта настройка подавляет подобные неуместные сообщения-отчеты

2. В качестве возвращаемого значений из хранимой процедуры при использовании statment.executeQuery() ожидается ResultSet. Он будет сформирован корректно в том случае, если последней исполняемой командой в хранимой процедуре будет запрос. Т.е. команда

SELECT ... FROM ...

OpenQuery() - в данном случае лишний.