Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по субд Крупская.doc
Скачиваний:
57
Добавлен:
15.06.2014
Размер:
2 Мб
Скачать
☆

65 Классификация и определение программных единиц. Общие ключевые слова.

С помощью PL/SQLможно строить различные программные единицы для доступа к базам данных, в том числе процедуры, функции и модули.

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

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

Модуль(package) – это группа процедур, функций и других конструкций, хранимых вместе в базе данных как одна единица. Модули особенно полезны для компоновки нескольких процедур и функций, имеющих отношение к конкретному приложению баз данных.

сreate[or replace]procedureимя_процедуры [(аргумент1 [{in|out|in out}] тип, … аргумент2 [{in|out|in out}] тип)] {is|as} тело процедуры/

сreate[or replace]functionимя_функции [(аргумент1 [{in|out|in out}] тип, … аргумент2 [{in|out|in out}] тип)]returnвозвращаемый тип{is|as} тело функции операторreturn/

сreate [or replace] trigger имя_триггера

{before | after | instead of} активизирующее_событие

on имя_таблицы

[for each row]

тело_триггера

1.OR REPLACE- Чтобы изменить текст процедуры, её необходимо удалить, а затем повторно создать. Во время разработки процедур эта операция повторяется достаточно часто, поэтому ключевые слова OR REPLACE позволяют выполнить такую операцию за один раз.

2. DECLARE – объявить

3. BEGIN - выполнить

66 Создание и использование процедур

процедуры создаются посредством инструкции PL/SQLCREATEPROCEDURE:

сreate[or replace]procedureимя_процедуры [(аргумент1 [{in|out|in out}] тип, … аргумент2 [{in|out|in out}] тип)] {is|as} тело процедуры/

Чтобы изменить текст процедуры, её необходимо удалить, а затем повторно создать. Во время разработки процедур эта операция повторяется достаточно часто, поэтому ключевые слова ORREPLACEпозволяют выполнить такую операцию за один раз. Если процедура существует, то она удаляется без всякого предупреждения (в данном случае вызов инструкцииDROPPROCEDUREне требуется), если же не существовала, то она просто создаётся

Рассказать про in, out, inout

Вызов процедур и функций

Приложение может вызывать процедуру в анонимном блоке PL/SQL. Вызов функций может осуществляться либо в анонимном блоке посредством оператора присваивания, либо в условииWHENSQL– оператора.

Приведём примеры:

declare

cur_cust_last varchar2(100);

cur_cust_first varchar2(100);

cur_cust_addr varchar2(100);

begin

…

cur_cust_addr:= get_customer_address(cur_cust_last, cur_cust_first);

…

end/

Вызов функции в условии SQL– оператора:

delete from orders

where address= get_customer_address (‘Иванов’,’Иван’);

67 Создание и использование (вызов) функций.

Создание функций отличается от создания процедур практически названием инструкции и наличием оператора RETURN:

сreate[or replace]functionимя_функции [(аргумент1 [{in|out|in out}] тип, … аргумент2 [{in|out|in out}] тип)]returnвозвращаемый тип{is|as} тело функции операторreturn/

Оператор RETURN имеет общий синтаксис:RETURN выражение. Выражение – это возвращаемое значение. Значение выражения преобразуется в тип, указанный в командеRETURN при описании функции, если, конечно, это значение уже не имеет данный тип.

Ниже приведен пример создания простой хранимой функции:

create or replace function get_customer_address (last in varchar2, firsr in varchar2) return varchar2 is

addr varchar2(20);

begin

select address into addr

fromcustomers

where lname=last and fname=first;

returnaddr;

exception

when others then return NULL;

endget_customer_address;/

Как видно из примера при создании процедур или функций ключевое слово DECLAREв разделе объявления подпрограмм не указывается.