Передача даних в збережені процедури

Збережені процедури 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

Схожі статті