Другие функции

Функция

Возвращаемое значение

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;

Назад | Содержание | Вперед