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

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

 

EXECUTE ім’я_процедури

Або

EXEC ім’я_процедури

Або

ім’я_процедури якщо виклик збереженої процедури є першим у пакеті.

 

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

 

EXECUTE ім’я_процедури параметр [ , параметр ...]

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

 

EXECUTE ім’я_процедури @ім’я _парам = значення [, @ім’я_парам = значення ...]

 

Наприклад:

EXECUTE sp_dboption @optname = 'read only', @dbname = 'Aromatherapy'

 

Панель Object Browser містить папку Stored Procedures для кожної бази даних, включаючи головну. Кожна збережена процедура, що міститься в списку, має папку Parameters. У цій папці в певному порядку розміщуються параметри збереженої процедури. Наприклад, дослідимо параметри системної збереженої процедури sp_helpdb, яка міститься у БД Master:

 

Рис.15.12. Відображення інтерфейсу збереженої процедури у вікні Object Browser Query Analyzer

 

 

Рис.15.13. Виклик і результати системної збереженої процедури sp_helpdb

 

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

Рис.15.13. Задання вихідного параметру збереженій процедурі

 

Якщо не параметр, а сама процедура повертає значення, синтаксис виклику є певним гібридом операторів EXECUTE i SET.

 

EXECUTE @ім’я_змінної = ім’я_процедури [, парам [, парам ...] ]

 

Якщо ви не вказали локальну змінну для прийому результатів, SQL Server просто відкине значення.