Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsiyi ріас.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
765.95 Кб
Скачать

Повернення результатів

Збережені процедури повідомляють свій "статус повернення", який вказує, чи була виконана процедура повністю, чи ні, а також причини невдачі. Це значення може зберігатися у змінній, яка передається процедурі при її виклику, і використовуватися в наступних операторах Transact-SQL. Інший спосіб повернення інформації з збережених процедур полягає в поверненні значень через вихідні параметри. Параметри, визначені як вихідні, в операторі create procedure (створити процедуру) або execute (виконати) використовуються для повернення значень в місце виклику процедури. Потім за допомогою умовних операторів можна перевірити значення, яке повертається.

Код повернення і вихідні параметри дозволяють розділити збережені процедури на модулі. Група SQL операторів, які використовуються декількома збереженими процедурами, можуть бути об’єднані в одну процедуру, яка повідомляє свій статус виконання або значення своїх параметрів викликає процедурі. Наприклад, багато системних процедури, що поставляються з SQL сервером, звертаються до процедури, яка перевіряє чи є зазначені параметри правильними ідентифікаторами.

Якщо в операторах create procedure і execute вказується опція output в назві параметра, то процедура повертає значення цього параметра викликає об’єкту. Цим об’єктом може бути SQL пакет або інша процедура, що зберігається, які використовують повернені значення в своїй подальшій роботі. Якщо повертаються параметри використовуються в операторі execute, який є частиною пакета, то значення, що повертаються параметрів разом з заголовком виводяться на екран перед виконанням наступних операторів пакета.

declaretranName DObjectName

declareretCode integer

begin

execute tran_BegintranName output

selecttranName

Лекція 11:

Тригери. Основні поняття. Типи тригерів. Загальна схема активізації тригерів

Тригер – це виконуваний модуль, прив’язаний до об’єкта бази даних і події, пов’язаної з цим об’єктом. Тригер викликається неявно при виникненні події над цим об’єктом. Тригери мають наступні характеристики:

• Тип тригера – DDL або DML

• Об’єкт – таблиця, VIEW, системний об’єкт для DDL тригерів

• Подія – insert, update, delete для таблиці і DML, instead of для VIEW або системна подія для DDL тригерів.

• Спосіб активації – для всього оператора або для кожного рядка

• Час активації – до або після виконання оператора.

Тригери в T–SQL по функціональності біднішими тригерів в Oracle. У SQL Server існують тільки after або instead of тригери, що викликаються для всього оператора.

Тригери SQL Server

Створення тригерів

create trigger trg

on my_table

for insert, update, delete

as

select "this is trigger"

Синтаксис команди створення тригера create trigger

create trigger [власник.] названіе_тріггера

  on [власник.] названіе_табліци

  for {insert, update, delete}

  as SQL_оператори

create trigger [власник.] названіе_тріггера

  on [власник.] названіе_табліци

  for {insert, update}

  as

  [If update (названіе_столбца) [{and | or}

    update (названіе_столбца)] ...]

       SQL_оператори

  [If update (названіе_столбца) [{and | or}

     update (названіе_столбца)] ...

        SQL_оператори] ...

CREATE trigger dbo.TD_Inscribe on Inscribe

for DELETE

as

begin

delete PP_S_ImageObject

where PP_S_ImageObject.ImageObjectID in

(Select deleted.PhotoID from deleted)

delete from

ImageObject

where

ImageObject.ImageObjectID in

(Select deleted.PhotoID from deleted)

end

видалення тригерів

Команда видалення тригера drop trigger має наступний вигляд:

drop trigger [власник.] названіе_тріггера

     [, [Власник.] Названіе_тріггера] ...

Таблиці INSERTED і DELETED

Коли викликаються тригери використовуються дві спеціальні таблиці: таблиця видалення (deleted table) і таблиця додавання (inserted table). Вони використовуються для перевірки операторів модифікації даних і створення умов для роботи тригерів. Користувач не може безпосередньо змінювати дані в цих таблицях, але може використовувати що знаходиться в них інформацію для перевірки наслідків виконання операторів insert, update або delete.

У таблиці deleted зберігаються копії рядків, які видаляються операторами update або delete. В процесі виконання цих операторів рядки видаляються з критичною таблиці і поміщаються в таблицю видалення. Зазвичай тригерна таблиця і таблиця видалення не мають спільних рядків.

У таблиці inserted зберігаються копії рядків, які вставляються операторами insert або update. В процесі виконання цих операторів нові рядки вставляються в таблицю додавання і тригерну таблицю одночасно. Таким чином, таблиця додавання завжди містить копії нових рядків, які були додані в тригерну таблицю.

CREATE trigger dbo.TU_Inscribe on Inscribe

for UPDATE

as

begin

if exists (

select

1

from

deleted, inserted

where

deleted.IdentifyDocumentID = inserted.IdentifyDocumentID

and deleted.InscribeID = inserted.InscribeID and

deleted.PhotoID is not null and inserted.PhotoID is null

)

begin

delete PP_S_ImageObject

where

PP_S_ImageObject.ImageObjectID in

(select

deleted.PhotoID

from

deleted, inserted

where

deleted.IdentifyDocumentID = inserted.IdentifyDocumentID

and deleted.InscribeID = inserted.InscribeID and

deleted.PhotoID is not null and inserted.PhotoID is null

)

delete

ImageObject

from

ImageObject

where

ImageObject.ImageObjectID in

(select

deleted.PhotoID

from

deleted, inserted

where

deleted.IdentifyDocumentID = inserted.IdentifyDocumentID

and deleted.InscribeID = inserted.InscribeID and

deleted.PhotoID is not null and

inserted.PhotoID is null

)

end

end

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]