Секция WITH позволяет вам использовать существующую команду выборки SQL SELECT для обработки данных из буферизированных курсоров или из фактических хранилищ данных.
Общая синтаксическая конструкция команды представлена в разделе SELECT - SQL.
[WITH (BUFFERING = lExpr) ] |
Параметры
- lExpr
-
Логического типа. В следующей таблице описаны возможные значения параметра lExpr.
lExpr Установка, описание True (.T.)
Данные в операторе SQL-SELECT выбираются из буферизированных таблиц, если такие буферы актуальны.
False (.F.)
(По-умолчанию) Данные в операторе SQL-SELECT выбираются из фактического хранилища, с диска.
Комментарии
В следующем программном коде представлены все ключевые секции общей команды SELECT - SQL:
![]() | |
---|---|
SELECT Select_List |
Детальная информация о каждой ключевой секции команды SQL SELECT представлена в следующих разделах:
Если вы используете BUFFERING = True (.T.), данные для запроса выбираются из соответствующих буферизированных курсоров, которые могут содержать откорректированные данные, не сброшенные в хранилища Таблиц. В противном случае данные выбираются из хранилищ таблиц, т.е. из записей, сохранненных на диске.
Если для курсора используется буферизация уровня Записи, тогда сначала данные из измененной записи сохраняются в хранилище, за тем выполняется оператор Выборки.
Если для курсора используется буферизация уровня Таблицы, тогда изменения сохраняются в буфере таблицы.
Параметры секции WITH BUFFERING поддерживаются только для локальных данных Visual FoxPro и не поддерживаются для удаленных серверов типа Back-End-DataBases.
Если вы используете BUFFERING = False (.F.), тогда ваш оператор выборки SELECT "вытягивает" необходимые данные из хранилища на диске, которые могут отличаться от уже измененных данных (находящихся в буферах таблиц). Если вы не используете рассматриваемых параметр BUFFERING, тогда результаты Запроса основываются на правилах, изложенных в следующем разделе: SET SQLBUFFERING, команда. По-умолчаниюt, данные для результатов Запроса "вытягиваются" из хранилищ на диске. Использование в операторе SELECT секции буферизации WITH BUFFERING = True (.T.) перекрывает текущие установки команды SET SQLBUFFERING.
Использование параметров секции WITH BUFFERING имеет эффект в следующих случаях:
-
Отсутствует рабочая область и именем / алиасом, который имеет имя Результата Запроса.
-
Исходный Курсор не буферизирован.
-
Исходный Курсор используется для оперативного изменения данных, удаления или дробавления записей.
Пример 1
В следующем примере выполняется простейшая выборка данных из одной таблицы. Для эффективной работы параметров секции WITH (буфферизация данных) требуется, чтобы была уже открыта рабочая область с соответствующим именем "Customers".
![]() | |
---|---|
SELECT * FROM customers WITH (BUFFERING=.T.) |
Пример 2
В следующем примере демонстрируется, что для каждой исходной таблицы данных, определяемых в секции FROM требуется использование соответствующей секции WITH BUFFERING.
![]() | |
---|---|
SET MULTILOCKS ON |