Создание и использование хранимых процедур в IBExpert.

Цель работы: научится создавать, ставить на выполнение, редактировать и удалять хранимую процедуру.

Хранимая процедураэто отдельная программа, написанная на процедурном языке используемого сервера баз данных. Существует две разновидности хранимых процедур: процедуры выбора (аналог SELECT-запросов) и исполняемые процедуры. Процедуры выбора возвращают наборы данных, которые состоят из строк или отдельных значений. Исполняемые процедуры не возвращают данные. Они предназначены для исполнения команд, например, delete.

Ø Создание хранимой процедуры

Процедура создается командой Database->New procedure. В появившемся окне задаются имя процедуры, ее входные/выходные параметры, локальные переменные и собственно сам код процедуры на SQL.

Для сохранения процедуры нажмите на кнопку с молнией. Для запуска процедуры нажмите на кнопку рядом (со значком стрелки вправо).

Пример процедуры добавления записи в таблицу:

Изменение процедуры производится в этом же окне. Удаление процедуры можно произвести из списка в Database Explorer, нажав на нужную правой кнопкой мыши и выбрав команду Drop Procedure…

Ø Запуск процедуры

Запуск процедуры можно выполнить из Database Explorer (правой кнопкой нажать на нужную процедуру и выбрать команду Run Procedure…) или же открыть окно редактирования процедуры и запустить ее там, нажав на кнопку со стрелкой вправо.

ЛАБОРАТОРНАЯ №8

Сортировка данных. Поиск. Фильтрация.

Цель работы: научиться выполнять сортировку, поиск и фильтрацию в наборах данных.

Ø Сортировка набора данных

Сортировка заключается в упорядочивании записей по определенному полю в порядке возрастания или убывания содержащихся в нем значений. Сортировку можно выполнять и по нескольким полям.

Сортировка наборов данных Table выполняется автоматически по текущему индексу. При смене индекса происходит автоматическое переупорядочивание записей. Таким образом, сортировка возможна по полям, для которых создан индекс. Для сортировки по нескольким полям нужно создать индекс, включающий эти поля. Направление сортировки определяет параметр ixDescending текущего индекса.

Список полей, по которым выполняется сортировка наборов данных Query, указывается в операнде ORDER BY. Поля в списке обозначаются именами или номерами, которые соответствуют номерам в списке полей после слова SELECT. По умолчанию сортировка происходит в порядке возрастания значений полей. Для указания обратного порядка сортировки по какому-либо полю нужно указать после имени этого поля описатель DESC.

Задание: Выполнить сортировки в таблицах базы данных Exmpl.gdb.

Таблица Поле Порядок сортировки

Owner

Ow По убыванию
NOn По убыванию
Lease Ldate По возрастанию
Realty Тур По алфавиту
Rent Rn По возрастанию

Ø Поиск записей

Поиск — это нахождение записи, удовлетворяющей определенным условиям, и возврат значений ее полей с возможным переходом на найденную запись. Отметим, что поиск можно вести по одним полям, а возвращать значения других полей. Составы полей для поиска и для возврата значений в общем случае не совпадают.

При организации поиска записей важное значение имеет наличие индекса для полей, по которым ведется поиск. Индексирование значительно повышает скорость обработки данных, кроме того, ряд методов может работать только с индексированными полями. К средствам поиска можно отнести методы Locate, Lookup, FindFirst, FindLast, FindNext и FindPrior, осуществляющие переход на записи, удовлетворяющие условиям фильтра, а также просмотры и курсоры.

Ø Поиск в наборах данных

Для поиска записей по полям служат методы Locate и Lookup, причем поля могут быть неиндексированными. Функция Locate (const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean ищет запись с заданными значениями полей. Если удовлетворяющие условиям поиска записи существуют, то указатель текущей записи устанавливается на первую из них. Если запись найдена, функция возвращает значение True, в противном случае — значение False. Для поиска в наборе данных также используется функция Lookup(const KeyFields: String; const KeyValues: Variant; const ResultFields: String): Variant осуществляет поиск записи, удовлетворяющей определенным условиям, но, в отличие от метода Locate, не перемещает указатель текущей записи на найденную запись, а считывает информацию из полей записи.

Ø Поиск по индексным полям

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

1. FindKey, SetKey, EditKey и GotoKey - поиска на точное соответствие;

2. FindNearest, SetNearest, EditNearest и GotoNearest, - частичное совпадение заданных для поиска значений и значений полей записей.

Задание: Выполнить поиск информации об объекте и владельцах недвижимости в таблицах базы данных Exmpl.gdb. Проверить информацию об арендованных объектах недвижимости на введенную дату.

Ø Фильтрация записей

Фильтрация — это задание ограничений для записей, отбираемых в набор данных. Фильтрация записей бывает: по выражению и по диапазону. Фильтрация похожа на SQL-запросы, но менее эффективна, т. к. ограничивает количество записей, видимых в наборе.

Ø Фильтрация по выражению

При использовании фильтрации по выражению набор данных ограничивается записями, удовлетворяющими выражению фильтра, задающему условия отбора записей. Достоинством фильтрации по выражению является то, что она применима к любым полям, в том числе к неиндексированным. В связи с тем, что в процессе отбора просматриваются все записи таблицы, фильтрация по выражению эффективна при небольшом количестве записей. Для задания выражения фильтра используется свойство Filter: string. Если выражение фильтра не позволяет сформировать сложный критерий фильтрации, то можно использовать обработчик события OnFilterRecord. Для активизации и деактивизации фильтра применяется свойство Filter ed : boolean. Параметры фильтрации задаются с помощью свойства FilterOptions:TFilterOptions. Это свойство принадлежит к множественному типу и может принимать комбинации двух значений:

1. foCaseInsensitive — регистр букв не учитывается.

2. foNoPartiaicompare — выполняется проверка на полное соответствие содержимого поля и значения, заданного для поиска.

Для связанных таблиц на отбор записей в набор данных также влияет ограничение, налагаемое отношением "главный-подчиненный" между таблицами БД.

Ø Фильтрация по диапазону

Для включения и выключения фильтрации по диапазону применяются методы ApplyRange - активизирует фильтр и Cance l Range – деактивизирует. Методы SetRangeStart и SetRangeEnd устанавливают нижнюю и верхнюю границу диапазона, соответственно. Для изменения предварительно установленных границ диапазона предназначены методы EditRangeStart и EditRangeEnd. Когда одна из границ диапазона не задана, то диапазон открыт, т. е. нижняя граница становится равной минимально возможному, а верхняя граница — максимально возможному значению этого поля. Если фильтрация выполняется одновременно по нескольким полям, то после вызова методов SetRangeStart или SetRangeEnd должны стоять несколько операторов присваивания, каждый из которых определяет границу по одному полю. Предварительно в качестве текущего должен быть установлен индекс, построенный по этим полям.

Задание:

1. Выполнить отбор информации об объекте и владельцах недвижимости в таблицах базы данных Exmpl.gdb.

2. Проверить информацию об арендованных объектах недвижимости на введенную период.


Лабораторная №9