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

Архив WebclubТехнологии2010

Публикация прежнего Webclub · 2010 год. Примеры и сведения сохранены в историческом контексте.

Функция

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

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

Создает тело хранимого пакета.

 

img src="images/db07477.gif" border=0 WIDTH=461 height=26>

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;

Ещё из архива

Архив клуба
веб-разработчиков

HTML, CSS, программирование и история интернета. Публикации прежнего Webclub по своим адресам.

Открыть архив
Сайт на ноутбуке и телефоне