Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кожин / Kontrolnaya_1.doc
Скачиваний:
28
Добавлен:
20.03.2016
Размер:
164.35 Кб
Скачать
  1. Выделение привилегий при работе пользователя (grant). Использование ролей.

Системные привилегии могут быть предоставлены сервером Oracle двум объектам системы: пользователям (User) и ролям (Role). Роль представляет собой поиме¬нованный набор привилегий.

Для предоставления привилегий пользователю в соответствии с требованиями стандарта используется команда GRANT. Пользователь, выдавший команду GRANT, должен об¬ладать системной привилегией GRANT ANY PRIVILEGE. Эта привилегия предоставляется ему явно или с параметром WITH ADMIN OPTION. Оператор определения системных привиле¬гий Oracle использует следующий синтаксис:

GRANT привилегия {[,привилегия ]...}

ТО [пользователь | PUBLIC] [,пользователь..] [WITH ADMIN OPTION]

Список основных привилегий приведен в таблицах.

Если при выделении привилегий указано ключевое слово ANY, то пользователю выделяются права доступа к объектам любой схемы БД, иначе привилегия распространяется только на схему базы данных пользователя.

Привилегия

Описание

CREATE [ANY] TABLE

Создание таблиц.

DROP [ANY] TABLE

Удаление таблиц.

ALTER [ANY] TABLE

Изменение структуры таблиц.

INSERT [ANY] TABLE

Вставка строк в таблицу или представление.

UPDATE [ANY] TABLE

Модификация строк в таблице или пред­ставлении.

DELETE [ANY] TABLE

Удаление строк из таблицы или представления.

SELECT [ANY] TABLE

Выборка из таблицы, представления или снимка базы данных.

CREATE [ANY] VIEW

Создание представ­ления.

DROP [ANY] VIEW

Удаление представления в схеме базы данных.

Привилегия

Описание

CREATE [ANY] PROCEDURE

Создание храни­мой процедуры, функции или пакета.

DROP [ANY] PROCEDURE

Удаление храни¬мой процедуры, функции или пакета.

EXECUTE [ANY] PROCEDURE

Выполнение храни¬мой процедуры, функции или пакета

ALTER [ANY] PROCEDURE

Изменение храни¬мой процедуры, функции или пакета

Системная привилегия

Описание

CREATE [ANY] TRIGGER

Создание триггера таблицы.

DROP [ANY] TRIGGER

Удаление триггера таблицы.

ALTER [ANY] TRIGGER

Включение и отключение триггера или внесение изменений в триггер.

Привилегия

Описание

CREATE USER

Создание нового пользователя.

DROP USER

Удаление пользователей базы данных.

ALTER USER

Изменнение характе­ристик пользователя.

Роль — это поименованный набор при­вилегий, который может быть предоставлен пользователю или другой роли.

Описание привилегий, характерных для той или иной роли, готовится заранее. При регистрации нового пользовате­ля в системе администратор выполняет только предоставле­ние пользователю привилегий конкретной роли.

Для работы с ролями в Oracle предусмотрены систем­ные привилегии, приведенные в таблице 1.8.

Ппривилегия

Описание

CREATE ROLE

Разрешает пользователю создавать роли в базе данных.

GRANT ANY ROLE

Разрешает пользователю предоставлять про­извольную роль произвольному пользовате­лю в базе данных.

DROP ANY ROLE

Разрешает пользователю уничтожать произвольную роль в базе данных.

ALTER ANY ROLE

Разрешает пользователю изменять привиле­гии произвольной роли в базе данных.

  1. Типы данных языка PL SQL. Формирование типа переменной на основе типа полей таблицы (%TYPE %ROWTYPE).

Кроме типов данных oracle 7, PLSQL поддерживает:

  • binary_integer, positive, natural

  • Boolean

  • Char, character, string

  • Number(dec, decimal, double, float, int)

  • Record – для создания пользовательских типов записей БД

  • Table

  • Varchar α

Tab%rowtype – используется для определения типа данных записи по типу данных столбцов таблицы, к имени которых (tab) приписан суффикс %

col%type – используется для определения типа данных столбца или переменной по типу данных другого столбца или переменной, к имени которых (col) приписан суффикс %

  1. Массивы в PL SQL

Для определения массиванеобходимо описать тип данных в массиве, после чего объявить переменную создания типа:

Declare type array_type is table of SQL_type(size) Index by binary_integer;

Arr array_type;//объявление массива

  1. Записи и их использование в PL SQL

Записи объявляются за два шага: сначала объявляется тип записи, а затем переменная этого типа.

TYPE имя_типа IS RECORD (имя_поля тип, имя_поля тип …) ;

имя_переменной имя_типа ;

  1. Курсоры и их использование.

CURSOR имя IS тело запроса;

Под курсором понимают получаемый при выполнении запроса результирующий набор и связанный с ним указатель текущей записи.

В PL/SQL поддерживается 2 типа: явные и неявные. Явные объявляет разработчик, неявный – не требует объявления. Возвращает >=0 строк.

  1. Структура блока программы PL SQL.

Процедура :

CREATE OR REPLACE PROCEDURE имя (список параметров) IS

Объявление локальных переменных ;

BEGIN

Тело ;

EXCEPTION

Обработка исключительных ситуаций

END;

Параметры

Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]

Функции :

CREATE OR REPLACE FUNCTION имя (список параметров) RETURN тип IS

Объявление локальных переменных ;

BEGIN

Тело ;

EXCEPTION

Обработка исключительных ситуаций

END;

Параметры

Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]

  1. Секция описания данных, секция реализации, секция обработки исключительных ситуаций.

DECLARE

Операторы объявления

BEGIN

Операторы исполнения

EXCEPTION

Операторы обработки исключительных ситуаций

END;

«- -» комментарии

Переменные объявляются после ключевого слова DECLARE

ИМЯ [CONSTANT] ТИП [:=значение];

  1. Стандартные и пользовательские исключительные ситуации.

Стандартные ИС:

NO_DATA_FOUND – не возвращает ни одной строки

TOO_MANY_ROWS – возвращает больше 1 строки (слишком много)

INVALID_NUMBER – неудачная попытка преобразования строки в число

NOT_LOGGED_ON – программа обращается к БД, не подключённой к ORACLE

ZERO_DIVIDE – попытка деления на 0

Пользовательские ИС – условия, которые разработчик считает ошибкой. Исключение должно быть объявлено в декларативной секции, требует явного вызова.

Name_exception EXCEPTION;

  1. Оператор ветвления (IF)

IF условие THEN

Тело ;

ELSE

Тело ;

END IF;

IF условие THEN

Тело;

ELSEIF условие THEN

Тело ;

ELSE

Тело;

END IF;

  1. Оператор циклов (WHILE)

While условие

Loop

Тело цикла;

End loop

  1. Оператор перехода (GOTO) и метки в программе

Позволяет осуществлять безусловный переход к метке, имя которой должно быть уникальным внутри программы или блока.

Переход GOTO метка

Метка <<метка >>

  1. Оператор присваивания

:= оператор присваивания

Пример: a NUMBER:=3

Присвоение значения может происходить немедленно после того, как объявлен тип переменной. Также присвоение может происходить в разделе выполняемого кода.

  1. Организация циклов в PL SQL

LOOP

Тело

END LOOP;

When Условие LOOP

Тело

END LOOP;

FOR счетчик IN [REVERSE] От .. До

LOOP

Тело

END LOOP;

Выход из цикла EXIT или EXIT WHEN условие.

Пример:

Declare

i number :=1;

begin

loop

insert into table values(i, i+1);

i:=i+1;

exit when i>5;

end loop;

end;

run;

  1. Возбуждение исключительных ситуаций.

Стандартные ИС возбуждаются автоматически (неявно) системой исполнения. Пользовательские ИС возбуждаются явно посредством команды Raise, которая также может вызывать предопределённые исключения.

После возбуждения исключения программа прекращает нормальную работу, переходя в блок обработки исключения, а затем возвращается в окружающую среду.

Raise _application_error()

  1. Процедуры и функции, их объявление и использование при программировании программ.

Процедура :

CREATE OR REPLACE PROCEDURE имя (список параметров) IS

Объявление локальных переменных ;

BEGIN

Тело ;

EXCEPTION

Обработка исключительных ситуаций

END;

Параметры

Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]

Функции :

CREATE OR REPLACE FUNCTION имя (список параметров) RETURN тип IS

Объявление локальных переменных ;

BEGIN

Тело ;

EXCEPTION

Обработка исключительных ситуаций

END;

Параметры

Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]

  1. Определение входных и выходных параметров.

Параметры

Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]

Оператор возврата RETURN имя или RETURN выражение

  1. Создание пакета процедур и функций.

Объявление спецификаций:

Create [or replace] package [имя_схемы] имя_пакета

AS

Объявление подпрограмм, констант, переменных

END[имя_пакета];

Пример:

Create or replace package asd AS

X NUMBER(5);

Function f(f1 number) return number;

Procedure aaa;

END asd;

Объявление тела пакета

Create [or replace] package body имя_пакета

AS

Тело пакета

END;

Константы и переменные, описанные в спецификации, являются глобальными и в теле пакета повторно не объявляются.

  1. Триггеры и использование триггеров для работы с базой данных. Триггеры на вставку, удаление и изменение записей.

CREATE [OR REPLACE] TRIGGER [Имя_схемы.]имя { BEFORE | AFTER}

{INSERT | DELETE | UPDATE [OF Имя_столбца [,Имя столбца …]]}

[OR{INSERT | DELETE | UPDATE [OF Имя_столбца [,Имя столбца …]]}...]

ON [Имя_схемы.]{Имя_таблицы | представление}

[ REFERENCING new | old AS имя ]

[FOR EACH ROW] [ WHEN условие]

DECLARE

Описание переменных, констант и курсоров

BEGIN

Тело триггера

END;

OR REPLACE – замещение старого текста триггера.

BEFORE или AFTER – на выполнение кода триггера до или после операторов манипулирования данными.

INSERT, DELETE или UPDATE действие над таблицей. Для оператора UPDATE могут быть указаны столбцы, изменение которых запускает триггер.

ON задает имя таблицы или пред¬ставления, ассоциированного с триггером.

REFERENCING переопределяет имена new old в теле триггера.

FOR EACH ROW опре¬деляет триггер как строчный.

WHEN задает допол¬нительное условие на значение полей таблицы.

  1. Триггеры, вызываемые перед операцией над таблицей и вызываемые после операции.

Триггеры могут вызывать перед совершением операции и после него. Это свойство описывается при объявлении в заголовке триггера с помощью слов BEFORE или AFTER.

  1. Доступ к новым данным при вставке записи (NEW) и доступ к старым данным при изменении или удалении записей (OLD).

OLD для обращения с старым значениям и NEW для новых.

Триггеры INSERT имеют доступ лишь к новым значениям - NEW.

Триггеры UPDATE имеют доступ к новым и старым – NEW и к OLD.

Триггеры DELETE имеют доступ лишь к старым значениям – OLD.

Например, оператор :

IF :new.pole1 >100 THEN …

проверяет новое значение, которое вставляется или на которое заменяется старое значение.

Если поле таблицы имеет имя OLD или NEW может возникнуть неоднозначность доступа. Для решения этой проблемы может использоваться опция REFERENCING. Для old и new после ключевого слова AS задается новое имя для использования вместо old и new при обращении к старым и новым значениям. Доступ к полям таблицы остается через использование действительных имен.

Соседние файлы в папке кожин