Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
42
Добавлен:
08.01.2022
Размер:
1 Mб
Скачать
  1. Pl/sql. Хранимые процедуры

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

Синтаксис:

CREATE [OR REPLACE] PROCEDURE имя_процедуры

[ (параметр [, параметр, …]) ] IS

[локальные объявления]

BEGIN

исполняемые предложения

[EXCEPTION обработчики исключений]

END [имя_процедуры];

При создании процедуры или функции, можно определить три типа параметров, которые могут быть объявлены:

IN – Параметр может ссылаться на процедуру или функцию. Значение параметра не может быть изменено процедурой или функцией.

OUT – параметр не может ссылаться на процедуру или функцию, но значение параметра может быть изменено процедурой или функцией.

IN OUT – Параметр может ссылаться на процедуру или функцию и значения параметра может быть изменено процедурой или функцией.

  1. Pl/sql. Функции

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

CREATE [OR REPLACE] FUNCTION имя_функции

(аргумент [IN] [OUT] [IN OUT] тип данных [{:= | DEFAULT} знач]) IS

[локальные объявления]

BEGIN

/* тело процедуры */

[EXCEPTION обработчики исключений]

RETURN (возвращаемое_значение)

END [имя_функции];

IN – Параметр может ссылаться на процедуру или функцию. Значение параметра не может быть изменено процедурой или функцией.

OUT – параметр не может ссылаться на процедуру или функцию, но значение параметра может быть изменено процедурой или функцией.

IN OUT – Параметр может ссылаться на процедуру или функцию и значения параметра может быть изменено процедурой или функцией.

Посредством оператора RETURN функция возвращает значение. Предложение RETURN немедленно завершает выполнение подпрограммы и возвращает управление вызывающей программе.

В PL/SQL существует ряд встроенных функций:

  • CONCAT(строка 1, строка2) Возвращает "строка 1", конкатенированную, (сцепленную) со "строка 2".

  • UPPER(строка) Возвращает "строка", в которой все символы прописные. Символы не являющиеся буквами не изменяются.

  • LOWER(строка) Возвращает "строка", со строчными символами. Символы не являющиеся буквами не изменяются.

  1. Pl/sql. Триггеры

Триггеры – это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных. В Oracle различают следующие виды триггеров: BEFORE INSERT, AFTER INSERT, BEFORE UPDATE, AFTER UPDATE, BEFORE DELETE, AFTER DELETE (CREATE TRIGGER).

Действие, которое выполняет триггер, задается в теле триггера блоком кода PL/SQL, который̆ не может содержать команд управления транзакциями, таких как COMMIT, ROLLBACK, SAVEPOINT.

Синтаксис:

CREATE [ OR REPLACE ] TRIGGER имя_триггера

BEFORE INSERT | AFTER INSERT | BEFORE UPDATE | AFTER UPDATE | BEFORE DELETE | AFTER DELETE

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

[ FOR EACH ROW ]

DECLARE

/* объявление переменных */

BEGIN

/* код триггера */

EXCEPTION

WHEN …

/* обработка исключительной ситуации */

END;

Триггеры BEFORE INSERT/UPDATE/DELETE исполняются до выполнения операторов INSERT/UPDATE/DELETE

Триггеры AFTER INSERT/UPDATE/DELETE исполняются после выполнения операторов INSERT/UPDATE/DELETE.

28