|
| ||||||||||||||||||||
| ||||||||||||||||||||
|
Другие функции
Подведем некоторые итоги: гибкость СУБД Oracle во многом определяется тем, что отдельные блоки кода PL/SQL программ можно хранить как объекты базы данных в формате хранимых процедур, функций и пакетов. Т.е. часть кода программы храниться там, где обрабатывается !!, т.е. на сервере. Пакет - совокупность функций и процедур, объединенных по общему функциональному признаку, в тело пакетов входят процедуры и функции. Процедура - объект базы данных обеспечивающий выполнение конкретных действий с передаваемыми параметрами процедуры. Функция - объект базы данных обеспечивающий выполнение конкретных действий над параметрами функции и возвращающая результат такой обработки. Для создания функций, процедур, пакетов базы данных используются следующие команды: CREATE FUNCTION Создает автономную хранимую функцию.
CREATE PACKAGE Создает спецификацию для хранимого пакета.
CREATE PACKAGE BODY Создает тело хранимого пакета.
img src="oracle_pr77.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;
Назад | Содержание | Вперед
|
|
CITForum © 1997–2025