Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник Мова SQL кредитно-модульний.doc
Скачиваний:
35
Добавлен:
01.05.2015
Размер:
1.25 Mб
Скачать

Тема 6. Збережені процедури

Збережені процедури підвищують продуктивність і безпеку баз даних, а також розширюють мову Transact-SQL можливостями, недоступними без використання цих об'єктів баз даних.

1. Основні відомості про збережені процедури

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

Продуктивність

При пересиланні кожної команди (або пакета команд) Transact-SQL на сервер для обробки останній повинен визначити, чи є у відправника права на виконання цих команд і чи припустимі самі команди. Перевіривши права доступу і синтаксис команд, SQL Server будує план виконання запиту.

Збережені процедури в цьому випадку більше ефективні. При створенні вони зберігаються в SQL Server, тому при виклику збереженої процедури її вміст відразу ж обробляється сервером. Єдиний оператор дозволяє викликати складний сценарій Transact-SQL, що втримується в збереженій процедурі, який дозволяє уникнути пересилання через мережу сотень команд.

Перед створенням збереженої процедури її команди проходять синтаксичну перевірку. Якщо при цьому не виявлено жодної помилки, ім'я процедури зберігається в таблиці SysObjects, а її текст - у таблиціSysComments. При першому запуску збереженої процедури створюється план виконання і збережена процедура компілюється. Надалі її обробка здійснюється швидше, оскільки SQL Server не доводиться перевіряти синтаксис команд, створювати план виконання і компілювати текст процедури. До створення нового плану в хеші перевіряється наявність існуючого плану виконання.

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

Можливості програмування

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

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

Якщо розроблювачам зручно писати складні програми на таких мовах, як C++, то потім ці програми можна викликати з SQL Server засобами збережених процедур особливого типу, які називаються розширеними збереженими процедурами.

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