Функция |
Возвращаемое значение |
DECODE (expr, search1, return1, [search2, return2, ]...[default]) |
Если expr равно search, возвращается соответствующий результат return. Если совпадающей пары не найдено, возвращается default. |
DUMP(expr[, return_format [, start_position[, length]]]) |
Expr во внутреннем формате Oracle |
GREATEST(expr[, expr]...) |
Наибольшее значение expr |
LEAST(expr[, expr]...) |
Наименьшее значение expr |
NVL(expr1, expr2) |
Возвращает expr2, если expr1 имеет пустое значение, в противном случае возвращает expr1. |
UID |
Целое число, которое уникально идентифицирует текущего пользователя. |
USER |
Имя текущего пользователя ORACLE. |
USERENV(option) |
Возвращает информацию о текущем сеансе. Аргументы помещаются в одиночных кавычках. Аргументы: ENTRYID, SESSIONSID, TERMINAL, LANGUAGE или LABEL. |
VSIZE(expr) |
Длина в байтах внутреннего проедставления для expr. |
Подведем некоторые итоги: гибкость СУБД Oracle во многом определяется тем, что отдельные блоки кода PL/SQL программ можно хранить как объекты базы данных в формате хранимых процедур, функций и пакетов. Т.е. часть кода программы храниться там, где обрабатывается !!, т.е. на сервере.
Пакет - совокупность функций и процедур, объединенных по общему функциональному признаку, в тело пакетов входят процедуры и функции.
Процедура - объект базы данных обеспечивающий выполнение конкретных действий с передаваемыми параметрами процедуры.
Функция - объект базы данных обеспечивающий выполнение конкретных действий над параметрами функции и возвращающая результат такой обработки.
Для создания функций, процедур, пакетов базы данных используются следующие команды:
CREATE FUNCTION
Создает автономную хранимую функцию.
CREATE PACKAGE
Создает спецификацию для хранимого пакета.
CREATE PACKAGE BODY
Создает тело хранимого пакета.
CREATE PROCEDURE
Создает автономную хранимую процедуру
Приведем примеры реализации пакетов, функций и процедур.
/* ******Пакет обработки ошибок ********************* */ create or replace package app_err as /* Получение текста аварийного завершения */ function get_err return varchar2; /* Установка текста аварийного завершения */ procedure set_err ( error_text in varchar2); /* Установка текста аварийного завершения и само завершение */ procedure raise_err ( error_text in varchar2); end app_err; create or replace package body app_err as app_err_text varchar2(32767); /* *********************************************************** */ function get_err return varchar2 is A varchar (32767); Begin A := app_err_text; app_err_text := null; Return ( A ); End; /* *********************************************************** */ procedure set_err(error_text in varchar2) is Begin app_err_text := error_text; End; /* ************************************************************** */ procedure raise_err ( error_text in varchar2) is Begin app_err_text := error_text; raise_application_error (-20000, error_text); End; end app_err; /* ** Функция осуществляющая расшифровку пароля пользователя в БД ** */ create or replace function password return varchar2 is name varchar2(23); pass varchar2(23); begin select ORANAME, CRYPT_PASSWORD into name, pass from USERS where USER_ORANAME = user; pass := encrypt( pass, name ); return( pass ); end; /*Удаляется публичный синоним*/ drop public synonym password; /*Создается публичный синоним*/ create public synonym password for password; /* устанавливаем привелегии*/ grant all on password to admin;
Назад | Содержание | Вперед