Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розділ 6.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
453.63 Кб
Скачать
  1. Збережені процедури в конкретних середовищах

Практичний досвід, створення програм обробки даних показує, що є ряд операцій над даними, які реалізують загальну для всіх користувачів логіку доцільно винести на сервер. Однак, для написання процедур, що реалізують ці операції стандартних можливостей SQL не досить, оскільки тут необхідні оператори обробки розгалужень, циклів і т.д. Тому багато постачальників СУБД пропонують власні процедурні розширення SQL (наприклад PL/SQL компанії Oracle і т.д.). Ці розширення містять логічні оператори (IF ... THEN ... ELSE), оператори переходу за умовою (SWITCH ... CASE ...), оператори циклів (FOR, WHILE, UNTIL) і оператори предачі керування в процедури (CALL, RETURN). За допомогою цих засобів створюються функціональні модулі, які зберігаються на сервері разом з базою даних. Звичайно такі модулі називають збереженими процедурами.

Вони можуть бути викликані з передачею параметрів будь-яким користувачем, що має на те відповідні права. У деяких системах збережені процедури можуть бути реалізовані й у вигляді зовнішніх стосовно СУБД модулів на мовах загального призначення, таких як С або Pascal. Приклад для СУБД PostgreSQL:

CREA ТЕ FUNCTION < ім 'я_функції>

([< типпараметра І >,... <тип_параметра2>])

RETURNS < типи, що повертаються>

AS [ <SQL_onepamop> <ім'я об'єктного модуля> J LANGUAGE 'SQL' 'С' 'internal'

Збережені процедури, є повноцінними об'єктами бази даних, а тому кожна з них зберігається в конкретній базі даних. Безпосередній виклик процедури, що зберігається, можливий, тільки якщо він здійснюється в контексті тієї бази даних, де знаходиться процедура.

  1. Типи збережених процедур

У SQL Server є декілька типів збережених процедур.

Системні збережені процедури призначені для виконання різних адміністративних дій. Можна сказати, що системні збережені процедури, є інтерфейсом, що забезпечує роботу з системними таблицями, яка, кінець кінцем, зводиться до зміни, додавання, видалення і вибірки даних з системних таблиць як призначених для користувача, так і системних баз даних. Системні збережені процедури, мають префікс sp_ зберігаються в системній базі даних і можуть бути викликані в контексті будь-якої іншої бази даних.

Призначені для користувача збережені процедури, реалізують ті або інші дії. збережені процедури, - повноцінний об'єкт бази даних. Внаслідок цього кожна процедура, що зберігається, розташовується в конкретній базі даних, де і виконується.

Тимчасові збережені процедури, існують лише якийсь час, після чого автоматично знищуються сервером. Вони діляться на локальні і глобальні. Локальні тимчасові збережені процедури,, можуть бути викликані тільки з того з'єднання, в якому створені. При створенні такої процедури їй необхідно дати ім'я, що починається з одного символу #. Як і всі тимчасові об'єкти, процедури цього типу, що зберігаються, автоматично віддаляються при відключенні користувача, перезапуску або зупинці сервера. Глобальні тимчасові збережені процедури, доступні для будь-яких з'єднань сервера, на якому є така ж процедура. Для її визначення досить дати їй ім'я, що починається з символів ##. Видаляються ці процедури при перезапуску або зупинці сервера, а також при закритті з'єднання, в контексті якого вони були створені.