Показать сообщение отдельно
Старый 09.11.2012, 10:09   #27  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Narayana Посмотреть сообщение
То есть строки таблиц с SQL-сервера таскаются с помощью оператора select в Х++, а потом уже в соответствии со структурой запроса в Х++ формируются в конечный результат?
Что вы имеете в виду под фразой "с помощью оператора select"? Строки таблиц с SQL-сервера таскаются ядром аксапты, протоколы обмена данными разные задействованы... я думаю вас не это интересует.

Для организации подобного взаимодействия AOS<->БД на стороне SQL-servera используется механизм курсоров.

Когда обрабатывается команда X++ "select" или выполняется первая итерация цикла "while select", а также когда первый раз выполняется метод QueryRun.next(), на SQL-сервере происходит создание курсора "DECLARE CURSOR..." (не напрямую кончно, через вспомогательгы хранимые процедуры, но не столь важно).

Когда выполняется команда X++ "next" или выполняются последующие итерации цикла "while select" или QueryRun.next(), на SQL-сервере происходит движение курсора к следующей строке запроса "FETCH".

Могу ошибаться в деталях, но общая схема работы именно такая.

Последний раз редактировалось S.Kuskov; 09.11.2012 в 10:48.