Збережені процедури sql

збережені процедури

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

Деякі СУБД дозволяють перевантаження, тобто створення декількох процедур або функцій з одним ім'ям, але з різним числом або типами аргументів.

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

Для прикладу створимо процедуру вставки п'яти записів в наступну таблицю:

У Oracle можна задати аргументів значення за замовчуванням. Конструкція OR REPLACE дозволяє перебудувати процедуру, якщо вона існує без виведення повідомлення про помилку. Для знищення процедури служить команда DROP PROCEDURE. Перевантаження дозволена тільки всередині пакетів.

PostgreSQL

Для створення процедур і функцій в PostgreSQL використовується одна конструкція. У першому випадку ми просто не вказуємо тип значення. Більш того, це заборонено, якщо вихідних параметрів більше одного. Якщо вихідних аргументів немає, то в якості повертається типу треба вказати void. Також не можна задавати аргументів значення за замовчуванням, але це компенсується механізмом перевантаження.

Нижче наведено приклад процедури для MySQL.

виклик процедур

Хоча за стандартом виклик процедур робиться командою CALL. в Oracle вона дозволена тільки поза процедурного блоку. А всередині блоку викликається звичайним чином. PostgreSQL взагалі не підтримує цю команду і для виклику процедури використовується команда SELECT.

Схожі статті