#0
by Shutov
Есть объект для подключения к базе MS SQL: ... собственно подключенный к базе. Теперь нужно выполнить запрос MS SQL. Для этого делаю: И далее два варианта кода выполнения запроса и получения данных: Далее перебираю результат для первого случая: И для второго : Первый вариант использую для обычных запросов, а второй для запросов с хранимыми процедурами MS SQL. Подскажите, чем эти варианты отличаются и можно ли прийти к единому способу решения для любых запросов SQL? Еще момент такой, что делает NextRecordset? ( - не совсем понятно, аналог MoveNext?).
#6
by sapphire
не "несколько несколько выполняються запросов", а когда результат возвращает несколько наборов записей, вообщето Microsoft назвала так метод для дебилов...
#7
by Регистратор
+ если ТаблицаДанных и ТаблицаДанных2 это рекордсеты то разницы как они получены нет никакой. не нужен т.к. там и так оно где надо в 2 ТаблицаДанных2.MoveNext; // <--- возможно процедура возвращает служебную информацию (типа сет каунт он остался) и ее тупо пропускают
#10
by Shutov
Правильно ли понимаю, что второй код обрабатывает статистические сообщения в ходе выполнения процедуры типа "(4 row(s) affected)"?
#11
by DmitrO
Почти правильно понимаешь. Это не статистические сообщения, это результаты выполнения DML инструкций. Код получения результатов целиком зависит от запроса, в т.ч. и от кода вызываемых им хранимых процедур. А правильно это так: каждая инструкция в запросе к серверу по отношению к клиенту может либо: 1.сформировать результат в виде набора данных (набора записей) (собственно recordset); (например инструкции типа select); 2.сформировать результат в виде количества обработанных строк (rowcount); (например инструкции DML типа insert, update, delete); 3.не сформировать никакого результата; (например set, declare) 4.сформировать несколько результатов 1-го или 2-го типа; (например execute sp_foo, если в ХП sp_foo есть несколько инструкций select и/или insert, delete и т.п.). Инструкция set nocount on - подавляет формирование результата 2-го типа. Действует на scope (контекст выполнения), кажется, следует уточнить в BOL. Результаты отправляются на клиента последовательно, по ходу выполнения запроса, и могут быть получены только последовательно. NextRecordset это метод, который какраз переводит состояние объекта к получению следующего результата. Так что все зависит от запроса.
#12
by DmitrO
Правильно написанные процедуры и скрипты лишних результатов не возвращают, правильно написанный код получения результатов принимает все необходимые результаты.
#18
by vde69
они должны быть обычными T-SQL (ведь стандарт один), за исключением расширений и мелочей всяких
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Распределение УСН и ЕНВД при закрытии 44 счета
- УПП Удержание денег с сотрудника за спецодежду
- Как сделать чтоб в табл.части Дока,сумма писалась прописью?
- Подключить несколько сканеров штрих кодов к одному компу
- v7: ЗУП 8.0. Отражение в больничном листе 2 дня за счет работодателя.
- Штрих-кодирование весового товара.
- VPN тунель это хорошо но как его заставить правильно роутить пакеты в сеть
- Как сделать загрузочный DVD диск с загрузочного CD Диска
- Как программно определить место вызова функции?
- v7: ВыбратьСубконто(,,,,,,1)
- УПП 80 Платежное поручение входящее
- Тип(Реквизит.Тип) = Тип("Строка")
- Тип(Реквизит.Тип) = Тип("Строка")
- v7: Не работает автоматический поиск в журнале документов!
- Заполнение справочника контрагентов при приеме данных
- Как программно вызвать действие (системное) копок?
- Передача параметров в форму и получение параметра потом
- Стоит ли вводить субсчета для 20 счета?
- обработка для изменения кода во внешних обработках.
- Рарусовский "Управление автотранспортом" - вылетает с ошибкой как потавить?