powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить в переменную результат выполнения хранимой процедуры лежащей в базе на MS SQL
3 сообщений из 3, страница 1 из 1
Как получить в переменную результат выполнения хранимой процедуры лежащей в базе на MS SQL
    #39535116
kominet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!
Прошу помощи, сам не смог не найти ответа на форуме не разобраться.
Проблема следующая: Необходимо в Excell получить результат выполнения хранимой процедуры от MS SQL.
Результат запроса на базе SELECT передаётся на ура но вот результат запроса с запуском хранимой процедуры никак не хочет работать
Код процедуры [CheckRuleList] заканчивается строкой:
Код: sql
1.
SELECT @ErrorText AS RCH


и возвращает где @ErrorText простая строковая переменная

Макрос В EXCELL:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim cn As ADODB.Connection
Dim rst As ADODB.Recordset

cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=LotsiaDB;Data Source=SERVERSQL" 'строка соединения
cn.Open
rst.Open "SELECT testC FROM [LotsiaDB].[LSDBO].[TestTable]", cn 'Вот так работает

'rst.Open "EXEC [ServerSQL].[LotsiaDB].[LSDBO].[CheckRuleList] 100008615600086,100000346000055", cn 'а вот так не работает

Sheets("Лист1").Range("A1").CopyFromRecordset rst
rst.Close
cn.Close

Set rst = Nothing
Set cn = Nothing

End Sub



когда в макросе прописываю
Код: vbnet
1.
rst.Open "EXEC [ServerSQL].[LotsiaDB].[LSDBO].[CheckRuleList] 100008615600086,100000346000055", cn 'а вот так не работает


При попытке выполнения VBA выдаёт ошибку "Операция не допускается, если объект закрыт" на строку:
Код: vbnet
1.
Sheets("Лист1").Range("A1").CopyFromRecordset rst



Подскажите пожалуйста, что не так у меня в коде.
...
Рейтинг: 0 / 0
Как получить в переменную результат выполнения хранимой процедуры лежащей в базе на MS SQL
    #39535131
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kominet, чаще всего проблемы в том, что в хранимой процедуре не стоит SET NOCOUNT ON
Проверьте.
Или же можно сделать так: если рекордсет закрыт, то надо сделать
Код: vbnet
1.
rst.NextRecordset
...
Рейтинг: 0 / 0
Как получить в переменную результат выполнения хранимой процедуры лежащей в базе на MS SQL
    #39535142
kominet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot, Спасибо большое! Дело оказалось действительно в отсутствии в хранимой процедуре SET NOCOUNT ON
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить в переменную результат выполнения хранимой процедуры лежащей в базе на MS SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]