Удаление хранимой процедуры
Базовый синтаксис удаления хранимой процедуры идентичен во всех трех ведущих базах данных.
Пользовательские функции объединяют в себе достоинства хранимых процедур и встроенных функций СУБД. Они могут принимать параметры, выполнять вычисления на основе извлеченных из таблиц данных с помощью одной или нескольких инструкций SELECT и возвращать результаты в вызывающую инструкцию SQL. Пользовательские функции могут быть скалярными и табличными (т. е. они могут включаться в предложение FROM). Детальное обсуждение дополнительных средств выходит за рамки книги. (Можно обратиться к документации СУБД или к книге Функции SQL. Справочник программиста (“Диалектика”, 2006). Главное отличие функции от хранимой процедуры заключается в том, что функция может быть вызвана. Для примера предположим, что нужно отобрать суммы заказов в разрезе клиентов, при этом должен быть учтен налог с продаж. Налоги с продаж отличны в разных штатах; к примеру, на момент написания настоящей книги в Калифорнии он составлял 7,25%. К тому же в базе данных ACME общая цена заказов вообще нигде не хранится, и она должна вычисляться динамически с помощью умножения цены товара на его заказанное количество. Последнее в базе данных ACME реализовано с помощью представления V_CUSTOMER_TOTALS (см. главу 4). Пользовательская функция UF_ORDERTAX принимает два параметра: процент налога и номер заказа, а возвращает общую сумму заказа с учетом налога с продаж.
PL/SQL Синтаксис PL/SQL создания пользовательской функции не сильно отличается от используемого для создания хранимых процедур. Главное отличие состоит в том, что в заголовке следует указать тип возвращаемого значения, а в теле функции должна содержаться инструкция возвращения значения. Весь программный код после инструкции RETURN игнорируется. В следующем примере создается инструкция UF_ORDERTAX.
Символ косой черты (/) в конце необходим для компиляции программного кода с помощью утилиты командной строки SQLPLUS. (Этот тезис также справедлив для хранимых процедур и триггеров.) При использовании утилит с графическим