Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4.pdf
Скачиваний:
503
Добавлен:
17.02.2016
Размер:
29.74 Mб
Скачать

132

Глава 11

 

 

 

 

Упорядочение результатов запроса

В самом общем случае оператор select извлекает набор данных, однако средства СУБД не предусматривают специального упорядочения получаемого набора. АВАР/4 обеспечивает возможность сортировки результатов запроса с помощью одного из приведенных ниже способов:

Добавления дополнительного предложения order by в оператор select

Сортировки внутренней таблицы, содержащей результаты запроса (см. главу 12)

Если упорядочение элементов выполняется с помощью добавления дополнения order by оператора select, то за ним должны следовать имена сортируемых полей:

Если предполагается сортировать полученный список по ключевым полям таблицы базы данных, используйте дополнение order by primary key. В приведенном выше примере это приведет к упорядочению списка клиентов в соответствии с их идентификаторами.

Динамическая выборка данных

До сих все конструкции операторов select рассматривались статически, т.е. в предположении, что известны имена таблиц или точные условия для предложения where. Однако для некоторых задач на момент написания программы неизвестно имя таблицы или точные условия в предложении where. АВАР/4 предлагает несколько способов решения этой проблемы.

Использование составных критериев выборки Select-Options

В простейшем случае известно все, кроме логической структуры условий предложения where (т.е. известны имена таблицы и полей, но неизвестен оператор сравнения). Типичным примером этого служит запрос конечного пользователя для выборки данных, сделанный до создания отчета и считывания базы данных. Средства для создания отчетов АВАР/4 имеют стандартный пользовательский интерфейс (жран выбора - selection screen), который обеспечивает задание любого критерия и условия. При работе программы заданные пользователем критерии выборки данных доступны в переменных, определенных как параметры Select-Options, которые определяют извлекаемый из базы набор данных.

Приведенная ниже программа предлагает пользователю экран для ввода критерия выборки в SelectOptions, а затем оператор Select считывает набор данных согласно заданному критерию:

Порядок задания критериев или имен в рамках Select-Options не влияет на порядок их извлечения из базы данных.

Более подробно использование средств Select-Options рассматривается в главе 16.

Динамическое присвоение имен таблиц

Допускается также динамическое присвоение имен таблиц, позволяющее каждому пользователю дать имя таблице, из которой извлекаются данные. При этом имя таблицы внутри оператора select заключается в круглые скобки и следует сразу же за параметром from:

Чтение таблиц базы данных

135

 

 

 

Оператор select выбирает все записи таблицы bookings, удовлетворяющие условию where для всех фамилий клиентов внутренней таблицы all_customers. Отношение между двумя таблицами устанавливается с помощью предложения where customid = all_customers-id и дополнения for all entries. Другими словами, оператор select эквивалентен следующему фрагменту программы:

Обратите внимание, что дополнение appending table не переопределяет содержимое внутренней таблицы, а добавляет новые записи в ее конец.

Сравнениеразличныхтехнологийпрограммирования

У каждого метода есть свои преимущества.

Вложенные циклы select

Простая реализация, использующая обычный оператор select

На каждом шаге доступны все поля текущей записи таблицы. Следовательно, легко добавлять дополнительные поля (например, bookings-connicl)

Нет неиспользуемых данных (отсутствует избыточность)

Возможны внешние соединения, даже если они не предусмотрены в СУБД. Например, можно применять тот же самый цикл select для вывода на экран имен пользователей, не зарегистрированных на 01/01/1999

Представления, определенные в АВАР/4 Dictionary

При извлечении больших наборов записей таблицы данный подход обеспечивает существенно более высокую производительность, чем вложенные операторы select

Внутренняя таблица может быть использована в дальнейшем, например для сортировки записи согласно различным критериям

Некоторые таблицы представления могут содержать неиспользуемые (избыточные) данные. В приведенном выше примере в представлении vcustbook фамилии пользователей являются избыточной информацией

Не поддерживаются внешние соединения

Добавление дополнительных полей требует изменений и инициализации представления Dictionary

Глава 12

Использование

внутреннихтаблиц

Заполнение внутренней таблицы

Как сортировать содержимое внутренней таблицы

Чтение одной или нескольких строк

Изменение содержимого

Работа с промежуточными суммами