PL/SQL презентация

Содержание

Слайд 1
PL/SQL


Слайд 2Триггер
блок PL/SQL, выполняемый неявно каждый раз, когда происходит конкретное событие


Слайд 3
DML-события, которые происходят при выполнении инструкций INSERT, UPDATE или DELETE.
DDL-события, которые

происходят при выполнении инструкций CREATE, ALTER или DROP.
Другие события уровня базы данных.


Слайд 4
CREATE [OR REPLACE] TRIGGER имя_триггера
{BEFORE | AFTER | INSTEAD OF }

событие_триггера
[OR событие_2 [OR событие_3]]
ON {таблица_или_представление |
NESTED TABLE столбец_вложенной_таблицы
OF представление}
[REFERENCING [OLD AS старая][NEW AS новая]
[PARENT AS родитель] ]
[FOR EACH ROW ][WHEN условие_триггера]


Слайд 5DML-события


Слайд 6
CREATE [OR REPLACE] TRIGGER имя_триггера
{BEFORE | AFTER} событие_триггера
ON [DATABASE |

схема]
[WHEN условие_триггера]
 
тело_триггера;
 
END имя_триггера;


Слайд 7DDL-события


Слайд 8DDL-события


Слайд 10 CREATE OR REPLACE TRIGGER secure_emp
BEFORE INSERT ON emp
BEGIN
IF (TO_CHAR (sysdate,'DY')

IN ('SAT','SUN'))
OR (TO_CHAR(sysdate,'HH24') NOT BETWEEN
'08' AND '18')
THEN RAISE_APPLICATION ERROR (-20500,
‘It is not working time. Be funny') ;
END IF;
END;


Слайд 11Псевдополя :new :old


Слайд 12CREATE OR REPLACE TRIGGER history_values
AFTER DELETE OR INSERT OR

UPDATE ON tab1
FOR EACH ROW
BEGIN
INSERT INTO history_tab (user_name,
timestamp, id, old_val1, new_val1,
old_val2, new_val2)
VALUES (USER, SYSDATE, :old.id, :old.val1,
:new.val1, :old.val2, :new.val2);
END;


Слайд 13CREATE OR REPLACE TRIGGER history_values
AFTER DELETE OR INSERT OR

UPDATE ON tab1
REFERENCING OLD AS OLDR NEW AS NEWR
FOR EACH ROW
BEGIN
INSERT INTO history_tab (user_name,
timestamp, id, old_val1, new_val1,
old_val2, new_val2)
VALUES (USER, SYSDATE, oldr.id, oldr.val1,
newr.val1, oldr.val2,newr.val2);
END;


Слайд 14CREATE OR REPLACE TRIGGER derive_commission_pct
BEFORE INSERT OR UPDATE OF sal

ON emp
FOR EACH ROW
WHEN (new.job = 'SALESMAN')
BEGIN
IF INSERTING THEN :new.comm := 0;
ELSE /* UPDATE of salary */
IF :old.comm IS NULL THEN
:new.comm := 0 ;
ELSE
:new.comm := :old.comm * (:new.sal/:old.sal);
END IF;
END IF;
END;


Слайд 15Порядок выполнения триггеров
Триггер BEFORE уровня инструкций.
Для каждой строки, обрабатываемой инструкцией.
Триггер BEFORE

уровня строки.
Сама инструкция, запускающая триггер.
Триггер AFTER уровня строки.
Триггер AFTER уровня инструкций.


Слайд 16
Если внутри триггера возникает сбой, и это исключение не обрабатывается явно,

то все действия, выполненные в связи с исходной SQL-командой, отменяются, включая действия, выполненные сработавшими триггерами.

Слайд 17Виды коллекций
Ассоциативные массивы(индексные таблицы)
Вложенные таблицы
Массивы переменной длины


Слайд 18Массив переменной длины
TYPE имя_типа IS {VARRAY|VARYING ARRAY} (предельный размер) OF тип_элемента

[NOT NULL];


Слайд 19
Declare TYPE int_varray ID VARRAY (3) of INTEGER;
varray_integer INT_VARRAY :=int_varray();
BEGIN
FOR I

in 1..3 LOOP
Varray_integer.EXTEND;
Varray_integer(i):=I;
END LOOP

Слайд 20Определение массивов переменной длины как объектных типов
CREATE OR REPLACE TYPE имя_типа

AS VARRAY|VARYNG ARRAY (предельный_размер) OF тип_элемента [NOT NULL]

Слайд 21Определение массивов переменной длины в таблицах
CREATE OR REPLACE TYPE address_varray AS

VARRAY (3);
CREATE TABLE addresses
(address_id integer not null,
Street_address address_varray not null,
Constraint address_pk PRIMARY KEY (address_id));

Слайд 22
Insert into addresses
Values (1, address_varray(‘Minsk’,’Brovki str.’,’6’));


Слайд 23
Select column_value
FROM THE ( select cast(street_address as varray_nested_table)
From addresses
Where address_id=1)


Слайд 24Вложенные таблицы
CREATE OR REPLACE TYPE имя_типа AS TABLE OF тип_элемента [NOT

NULL]

Слайд 25Ассоциативные массивы
CREATE OR REPLACE TYPE имя_типа AS TABLE OF тип_элемента [NOT

NULL] INDEX BY[PLS_INTEGER|BINARY_INTEGER|VARCHAR2(размер)]

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика