Хранимые процедуры вполне нормально возвращают результаты (запросы). Однако есть некоторые "тонкости".
1. Дело в том, что ряд команд SQL-сервера возвращают нечто вроде "отчета" об успешном своем выполнении. В данном случае, вероятно, команда
X++:
SET LANGUAGE N'русский'
Т.е. факт выполнения этой команды привел к выдаче сообщения
Цитата:
Параметры языка изменены на "русский"
Это сообщение было воспринято как возвращаемый результат и передано в ResultSet. Но, поскольку это значение не является ResultSet, то на стороне клиента это вызвало ошибку.
Чтобы избежать подобных недоразумений необходимо первой командой внутри хранимой процедуры сделать такую настройку
Эта настройка подавляет подобные неуместные сообщения-отчеты
2. В качестве возвращаемого значений из хранимой процедуры при использовании statment.executeQuery() ожидается ResultSet. Он будет сформирован корректно в том случае, если последней исполняемой командой в хранимой процедуре будет запрос. Т.е. команда
SELECT ... FROM ...
OpenQuery() - в данном случае лишний.