Выгружает очередной результирующий набор данных в соответствующий Курсор Visual FoxPro, если предусматривается несколько результирующих наборов данных.

SQLMORERESULTS(nStatementHandle [, cCursorName [, aCountInfo]]))

Параметры

nStatementHandle

Определяет Дескриптор (указатель, идентификатор) Соединения с удаленным источником Данных (сервером) или Data Source (DS), возвращаемый ранее выполненной функцией SQLCONNECT( ).

cCursorName

Определяет имя Курсора Visual FoxPro, в котором сохраняются результирующие наборы. Если данный параметр не казывается, система Visual FoxPro использует базовое имя, по-умолчанию: "SQLRESULT".

В случае получения нескольких результирующих наборов, каждый очередной курсор получает имя от имени базового курсора с добавлением  последующего целого числа (SQLRESULT2, SQLRESULT3...).

aCountInfo

Определяет имя массива для сохранения дополнительной информации о результатах выполнения Запросов. Если указанный массив не существует, он будет создан автоматически. Массив содержит два столбца: 1 – Alias (алиас курсора), 2 –Count (количество записей).

Столбец Содержание
массива
Тип
данных
Краткое описание

Alias,
Алиас

"0"

Character

Указывает на то, что результаты оператора SQL отсутствуют. Или нет результирующих Записей, или оператор SQL завершил свою работу (последний вызов функции SQLMORERESULTSl), или выполнение Запроса прервано до завершения выполнения Запроса. Данное значение может быть только в первой строке массива. В этом случае второй столбец Count содержит значение выгруженных записей =  -1.

Непустая строка

в верхнем

регистре

Character

Содержит имя выгруженного Курсора. Стобец Count содержит количество выгруженных Записей или значение =  -1, если выборка прервана. Если Count = -1, то курсор не создается. В условиях Асинхронного выполнения SQL запросов процесс выборки данных для результирующего курсора разделяется на вызовы нескольких функций SQLMORERESULTS / SQLEXEC; каждый вызов данных функций возвращает свое значение выгруженных Записей.

Пустая строка ('')

Character

Указывает на то, что такие операторы SQL, как (INSERT, UPDATE, DELETE) не возвращают результирующих наборов данных.

Count,
Кол-во

Количество
выгруженных
записей.

Integer

Указывает на количество выгруженных Записей и соответствует возвращаемому значению внешней функции ODBC SQLRowCount.

Возвращается значение = -1, если результирующие Записи отсутствуют.

Expand imageВозвращаемое значение

Числового типа (Numeric). SQLMORERESULTS( ) возвращает значение = 0, если соответствующий оператор SQL продолжает выполняться, или значение = 1, если выполнение завершено, или значение = 2, если данных больше нет. При отключенном Пакетном режиме, функция SQLMORERESULTS( ) может быть выполнена после каждого успешного вызова начальной функции Запоса SQLEXEC( ), и вызывааться (выполняться) несколько раз, пока не происходит SQLMORERESULTS( ) =2 (данных больше нет). Дополнительная функция SQLSETPROP( ) может быть использована для включения или отключения Пакетного режима, но до выполнения основной функции SQLEXEC( ), которая содержит стартовый оператор Запроса SQL.

SQLMORERESULTS( ) возвращает значение = – 1, если возникла ошибка уровня Соединения (Connection Level Error), или значение = – 2, если возникла ошибка уровня Окружения (Environment Level Error).

Expand imageКомментарии

Функция SQLMORERESULTS( ) используется в тех случаях, когда оператор SQL определяет к выгрузке нескольких результирующих наборов данных, заданных в начальной функции SQLEXEC( ), которая выполняется при отключенном Пакетном режиме. Если выгружается несколько результирующих наборов, то система Visual FoxPro выгружает их по одному за один вызов рассматриваемой функции.

Функция SQLMORERESULTS( ) есть одна из четырех (4-х) функций, которые могут выполняться как в Синхронном , так и в Асинхронном режиме. Указанные режимы работы устанавливаются соответствующей функцией SQLSETPROP( ), которая должна быть выполнена до основной функции Запроса. В Асинхронном режиме, вы можете многократно выполнять фуекцию SQLMORERESULTS( ), пока она возвращает значение = 0, (Still Executing).

Expand imageПример

В следующем примере предполагается, что уже ранее функция SQLCONNECT( ) была успешно выполнена, и возвратила дескриптор Соединения, который сохранен в переменной с именем gnHandle. SQLSETPROP( ) используется для отключения Пакетного режима: BatchMode =  False (.F.), поэтому могут быть получены индивидуальные результирующие наборы данных, Курсоры.

SQLMORERESULTS( ) используется дважды, для получения различных результирующих наборов, которые выгружаются с помощью соответствующих операторов в функции SQLEXEC( ). Команда SET может быть использована для отображения системного окна View, где будут отражены результаты выполнения Запросов, указанных в функции SQLEXEC( ) (Select (1) и Select (2)).

 CopyCode imageКопировать Код
= SQLSETPROP(gnHandle, 'BatchMode', .F.) && Individual result sets
= SQLEXEC(gnHandle, 'SELECT * FROM authors;
SELECT * FROM titles')
= SQLMORERES(gnHandle) && First result set
= SQLMORERES(gnHandle) && Second result set

Expand imageСм. также