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

Методи створення збережених процедур

SQL Server надає простий механізм для створення збережених процедур. Для цього необхідно скористатися або вікном ObjectExplorerабо вікномTemplateExplorer. В обох випадках система запропонує користувачеві зразок коду створення збереженої процедури, який необхідно доробити у відповідності до вимог створення процедури.

Оператор CREATE PROCEDURE

Оператор CREATE PROCEDURE(або його скорочена версіяCREATE PROC) призначений для створення збережених процедур за допомогою редактору запитів або утиліт командного рядка, наприклад osql.CREATE PROCдозволяє виконувати наступні завдання:

  • визначати згруповані збережені процедури;

  • визначати вхідні й вихідні параметри, їхні типи даних і значення за замовчуванням. Визначення параметра завжди починається зі знака «at»(@), після якого треба вказати ім'я параметра й опис його типу даних. В описі вихідних параметрів повинне бути присутнім ключове словоOUTPUT, що дозволяє відрізнити їх від вхідних параметрів;

  • виводити відомості про успішне або невдале завершення завдання;

  • управляти хешуванням плану виконання процедури;

  • шифрувати вміст збереженої процедури для забезпечення її безпеки;

  • контролювати режим виконання процедури для передплатника реплікації;

  • задавати дії, які виконує процедура під час виконання.

Передача контексту збереженій процедурі

Всі збережені процедури, крім тимчасових, завжди створюються в поточній базі даних. Тому перед створенням процедури варто вибирати поточну базу даних за допомогою оператора USE ім'я_бази_даних, після якого зазначається пакетна командаGO. Для вибору поточної бази даних також використовують список, що розкривається на панелі інструментів.

Перший пакет показаного далі сценарію робить базу даних Pubsпоточної й створює процедуруListAuthorNames, власником якої єdbo:

USE Pubs

GO

CREATE PROCEDURE [dbo].[ListAuthorNames]

AS

SELECT [aiLfnanie], [au_lnarne] FROM [pubs], [dbo]. [authors]

Зверніть увагу, що тут використовується повне ім'я процедури, Повне ім'я збереженої процедури складається з імені власника процедури (у цьому випадку dbo) і імені самої процедури - ListAuthorNames. Якщо процедуру варто виконувати незалежно від власника таблиці або бази даних, власником процедури повинен бутиdbo. При використанні оператораCREATEPROCEDUREім'я бази даних не входить у повне ім'я збереженої процедури.

Виконання збереженої процедури

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

Якщо збережена процедура не є першим оператором пакета, то для запуску збереженої процедури необхідно випередити її ім'я ключовим словом EXECUTE(або його скороченою версією -EXEC).

Виклик збереженої процедури

Для виклику збереженої процедури досить указати її повне ім'я, наприклад [ім'я__6ази_даних].[власник]. [ім'я_процедури]. Якщо ви зробите базу даних, у якій утримується збережена процедура, поточною (USE ім'я_бази_даних), то для виклику процедури досить указати частину імені:[власник].[ім'я_процедури], а якщо ім'я процедури унікально в активній базі даних, то можна використати просто[ім'я_процедури].

При виконанні системних збережених процедур із префіксом sp_, а також локальних і глобальних процедур не обов'язково використовувати повні імена. SQL Server буде шукати в базі данихMasterбудь-яку збережену процедуру із префіксомsp_,власником якої єdbo. Якщо ви все-таки вирішили привласнити локальній і системній процедурам однакові імена, обов'язково вкажіть у першому випадку ім'я власника, відмінне відdbo. SQL Server не виконує пошук розширених збережених процедур у базі данихMasterавтоматично. Тому треба або вказувати повне ім'я розширеної збереженої процедури, або зробити активної базу даних, у якій вона перебуває.