- •Процедуры и функции в PL/SQL
- •Объявление и использование подпрограмм
- •Состав и параметры процедуры
- •Формальные параметры
- •Режимы использования параметров
- •Формальные и фактические параметры
- •Вызов процедуры
- •Позиционная нотация
- •Именованная нотация
- •Пример анонимного блока, объявляющего процедуру (1)
- •Пример анонимного блока, объявляющего процедуру (2)
- •Функция
- •Объявление и использование функции, вычисляющей сумму заказа
- •Преимущества хранения подпрограмм в базе данных
- •Создание хранимых процедур и функций
- •Создание и вызов процедуры без параметров
- •Создание и хранение процедуры printLine в БД Oracle (1)
- •Создание и хранение процедуры printLine в БД Oracle (2)
- •Выполнение блока, использующего процедуру printLine
- •Другой способ выполнения PL/SQL- подпрограмм
- •Создание и хранение функции orderTotal в БД Oracle (1)
- •Создание и хранение функции orderTotal в БД Oracle (2)
- •Выполнение блока, использующего
- •Хранимая процедура, определяющая число записей в таблице (1)
- •Хранимая процедура, определяющая число записей в таблице (2)
- •Хранимая процедура, возвращающая по первичному ключу название каталога (1)
- •Хранимая процедура, возвращающая по первичному ключу название каталога (2)
- •Хранимая процедура, выдающая число заказов покупателя по его коду (1)
- •Хранимая процедура, выдающая число заказов покупателя по его коду (2)
- •Пример использования функции с оператором IF
- •Функция compute_discounts (1)
- •Функция compute_discounts (2)
- •Использование функции compute_discounts (1)
- •Использование функции compute_discounts (2)
- •Пакеты
- •Глобальные конструкции
- •Пример создания спецификации пакета
Пример анонимного блока, объявляющего процедуру (2)
В теле программы трижды вызывается процедура printLine:
Первый вызов – пример позиционной нотации. Значе- ния фактических параметров неявно соответствуют формальным параметрам процедуры в тех же позициях.
Второй вызов – пример именованной нотации. При использовании имен параметры могут указываться в произвольном порядке.
Третий вызов – для параметров со значениями по умол- чанию, фактические параметры можно не указывать.
Функция
Возвращает значение в среду, из которой была вызвана.
Спецификация функции объявляет тип возвращаемого значения. Тело функции должно включать один или более операторов RETURN для возвращения значения функции в вызывающую среду.
Программа может вызвать функцию везде, где выражение действительно (в качестве параметра при вызове процедуры или в правой части оператора присваивания).
Оператор SQL может ссылаться на определенную пользо- вателем функцию в условии блока WHERE.
Объявление и использование функции, вычисляющей сумму заказа
Преимущества хранения подпрограмм в базе данных
Возможность повторного использования кода и повы- шение продуктивности разработчиков. Концентрация общих процедур и функций в БД позволяет использовать их в любом приложении.
Целостность данных. Когда правильность хранимых подпрограмм подтверждена, приложения могут пола- гаться на них как на методы доступа к данным, не нару- шающие целостность данных в базе.
Безопасность. Представляют собой скомпилированные программы для доступа к информации, скрывающие доступные им основные структуры БД.
Создание хранимых процедур и функций
Синтаксис создания хранимой процедуры:
CREATE PROCEDURE спецификация_процедуры IS тело_процедуры
Синтаксис создания хранимой функции:
CREATE FUNCTION спецификация _функции IS тело_функции
Процедуру или функцию можно создать заново:
CREATE OR REPLACE спецификация _процедуры IS тело_процедуры
Прямой слэш (/) сообщает, что ввод программы завершен и нужно перейти к выполнению команд.
Создание и вызов процедуры без параметров
CREATE PROCEDURE my_proc IS greetings VARCHAR2 (20) ;
BEGIN
greetings := 'Hello World'; dbms_output . put_line (greetings) ;
END my_proc;
/ |
|
|
SET SERVEROUTPUT ON ; |
Вызов из командной |
|
EXECUTE my_proc ; |
||
строки |
||
|
||
BEGIN |
|
|
my_proc; |
Вызов из анонимного |
|
END; |
блока |
|
/ |
|