Збережені процедури SQL Server можуть мати масу вхідних і вихідних параметрів (точніше кажучи, аж до 2100 одиниць).
В інструкції CREATE PROCEDURE можна перерахувати параметри, що передаються збереженій процедурі, вказавши їх безпосередньо після її імені. Кожен з параметрів повинен починатися з символу @. Для процедури, що він є локальною змінною. Як і всі локальні змінні, параметри повинні оголошуватися з допустимими типами даних. При виклику процедури, що повинні також зазначатися всі параметри (якщо, звичайно, деякі з них не мають значень, заданих за замовчуванням).
CREATE PROCEDURE CategoryGet
SELECT ProductCategoryName, ProductCategoryDescription FROM dbo.ProductCategory
WHERE ProductCategoryName = @CategoryName, *
При виконанні наступного програмного коду збереженій процедурі як параметр передається літерал 'Kite', який підставляється в якості локальної змінної в пропозицію WHERE запиту SELECT:
EXEC CategoryGet 1 Kite ';
Результат виконання процедури:
Kite a variety of kites, from simple
stunt, to Chinese, to novelty
Якщо збереженій процедурі передається безліч параметрів, то вони повинні зберігати порядок, зазначений у визначенні. Можна також передавати параметри в будь-якому порядку, але при цьому вказувати їх імена. Якщо ці два методи поєднуються, то після першого явного вказівки імені параметра всі інші повинні використовувати той же метод.
У наступних трьох прикладах продемонстровані виклики збережених процедур і передача їм параметрів з використанням вихідного порядку і імен:
EXEC StoredProcedure @Parameterl = п,
@ Parameter2 = 'л 1;
EXEC StoredProcedure п, 'n';
EXEC StoredProcedure п, @ Parameter2 = 'п';
Значення параметрів, задані за замовчуванням
При виклику процедури, що ви зобов'язані вказати всі її параметри, крім тих, для яких були визначені значення за замовчуванням. У визначенні процедури, що значення за замовчуванням визначаються додаванням до імені параметра знака рівності і значення: CREATE PROCEDURE імя_процедури (
@ Змінна тип_даних = значеніе_по_умолчанію);
CREATE PROCEDURE pProductCategory_Fetch2 (
SELECT ProductCategoryName, ProductCategoryDescription FROM dbo.ProductCategory WHERE ProductCategoryName = @Search OR @Search IS NULL;
IF @@ RowCount = 0 RAISERROR (
EXEC pProductCategory_Fetch 'OBX';
Буде отримано наступний результат:
Якщо процедура pProductCategory_Fetch виконується без явної вказівки параметра, то змінної @Search присвоюється значення за замовчуванням - null, що робить істинним виконання умови пропозиції WHERE для всіх рядків таблиці ProductCategory.
Accessory kite flying accessories
Book Outer Banks books
Clothing OBX t-shirts, hats, jackets
Kite a variety of kites, from simple
stunt, to Chinese, to novelty Material Kite construction material
Video stunt kite contexts and lessons,
and Outer Banks videos