Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДР.doc
Скачиваний:
19
Добавлен:
10.06.2015
Размер:
2.07 Mб
Скачать

2.4.1.4 Хранимые процедуры

Программное обеспечение Vakansia использует хранимые процедуры.

Хранимая процедура является набором инструкций, хранящимся на стороне СУБД. Набор инструкций обычно пишется в виде последовательности SQL-команд.

Использование хранимых процедур имеет следующие преимущества:

      • производительность. При создании текст процедуры оптимизируется и хранится в БД в откомпилированном виде. В таком виде процедура выполняется гораздо быстрее, чем в случае динамического компилирования каждого составляющего ее запроса. Выполняются ХП сервером, а не клиентом, что позволяет сократить сетевой трафик;

      • модульное проектирование. Использование хранимых процедур часто позволяет значительно сократить объём кода клиентского приложения. Приложения, получающие доступ к одной и той же БД, могут совместно использовать одни и те же процедуры, и не нужно снова программировать одни и те же действия, благодаря чему уменьшается риск программных ошибок в клиентских приложениях и экономится время программиста;

      • локализация изменений. Если процедура модифицируется, то все внесенные изменения автоматически отражаются во всех приложениях, использующих процедуру, обеспечивая их согласованность;

      • защита. В большинстве СУБД хранимые процедуры считаются защищаемыми объектами и им назначаются отдельные привилегии.

      • простота доступа. В больших БД набор ХП может стать для прикладных программ основным средством доступа к БД. Часто вызов стандартной процедуры более понятен, чем выполнение последовательности SQL-команд (запросов);

      • реализация деловой логики. Возможности условной обработки, предоставляемые ХП, часто используются для реализации бизнес-логики в БД. В хранимых процедурах можно реализовывать сложные алгоритмы обработки данных внутри базы, причем во многих случаях использование хранимых процедур позволяет чётко отделять алгоритмы логики программы от алгоритмов обработки данных.

Одной из наиболее сложных хранимых процедур в Vakansia является процедура TRUD_ALL (пример 8). Эта процедура использует курсор для предоставление предыдущего места работы в строковом виде.

Листинг 2.1 – Процедура TRUD_ALL

create or alter procedure TRUD_ALL ( COD integer)

returns ( NAME varchar(10000))

as

declare variable IORAZALL varchar(10000);

declare variable IORAZ varchar(1000);

begin

iorazall='';

for select case when cast(date1 as varchar(10)) is null then '' else

case when EXTRACT(day from date1)<10 then '0'||EXTRACT(day from date1) else EXTRACT(day from date1) end ||'.'|| case when EXTRACT(month from date1)<10 then '0'||EXTRACT(month from date1) else EXTRACT(month from date1) end ||'.'||EXTRACT(year from date1) end ||' - '|| case when cast(date2 as varchar(10)) is null then '' else case when EXTRACT(day from date2)<10 then '0'||EXTRACT(day from date2) else EXTRACT(day from date2) end ||'.'||case when EXTRACT(month from date2)<10 then '0'||EXTRACT(month from date2) else EXTRACT(month from date2) end ||'.'||EXTRACT(year from date2) end||' '|| COALESCE(name||', ','')|| COALESCE(Podr||', ','')|| COALESCE(prof||', ','')|| COALESCE('выполняемые обязанности: '||obaz||', ','')|| COALESCE('причина увольнения: '||prichina,'')

from trud where code_anket=:cod

into ioraz

do

iorazall=iorazall||ioraz||'; ';

name=iorazall;

suspend;

end

Список хранимых процедур с кратким описанием размещен в таблице 2.21.

Таблица 2.21 – Список хранимых процедур

Название

Описание

BLACK_FULL

Это простая хранимая процедура, которая выводит причину занесения кандидата в черный список. Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение

DETI_ALL

Это простая хранимая процедура, которая выводит информацию о детях. Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение

OBRAZ_NAME

Это простая хранимая процедура, которая информацию об образование кандидата. Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение

SUD_ANKET

Это простая хранимая процедура, которая выводит информацию о судимостях кандидата Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение

TRUD_ALL

Это простая хранимая процедура, которая выводит информацию о трудовой деятельности кандидата. Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение

TESTER

Эта хранимая процедура проводит подсчет правильных ответов при тестировании. Параметр ввода регистрационный номер анкеты кандидата, возвращает идентификатор результата