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

Збережена процедура стає тільки більш цінною, якщо використовує параметри Раніше створена збережена процедура CategoryList повертає назви всіх категорій товарів Водночас процедурі, яка витягає конкретну рядок таблиці, потрібно передавати деякий параметр (наприклад, ідентифікатор товару)

Збережені процедури SQL Server можуть мати масу вхідних і вихідних параметрів (точніше кажучи, аж до 2100 одиниць)

Вхідні параметри

В інструкції CREATE PROCEDURE можна перерахувати параметри, передані збереженій процедурі, вказавши їх безпосередньо після її імені Кожен з параметрів повинен починатися з символу @ Для збереженої процедури він є локальної змінної Як і всі локальні змінні, параметри повинні оголошуватися з допустимими типами даних При виклику збереженої процедури повинні також зазначатися всі параметри (якщо, звичайно, деякі з них не мають значень, заданих за замовчуванням)

У наступному прикладі створюється збережена процедура, яка повертає одну категорію товарів Параметр @ CategoryName може приймати текстову рядок у таблиці Unicode довжиною до 35 символів Передане значення в самій збереженій процедурі присвоюється локальної змінної і використовується в реченні WHERE:

USE OBXKites

go

CREATE PROCEDURE CategoryGet

(@CategoryName NVARCHAR(35))

AS

SELECT ProductCategoryName, ProductCategoryDescription FROM dboProductCategory

WHERE ProductCategoryName = @CategoryName ,*

При виконанні наступного програмного коду збереженій процедурі як параметр передається літерал Kite, який підставляється в якості локальної змінної в пропозицію WHERE запиту SELECT:

EXEC CategoryGet 1 Kite;

Результат виконання процедури, що:

ProductCategoryName ProductCategoryDescription

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 імя_процедури (

@ Змінна тип_даних = значеніе_по_умолчанію)

У наступному прикладі, витягнутою з навчальної бази даних OBXKites, продемонстровано використання значень за замовчуванням параметрів процедури Якщо в цю процедуру передається назва деякої категорії, то вона повертає дані тільки про неї Якщо ж їй нічого не передається, то в реченні WHERE використовується значення за замовчуванням – NULL, що дозволяє повернути всі категорії товарів:

CREATE PROCEDURE pProductCategory_Fetch2(

©Search NVARCHAR(50} = NULL

)

– Якщо © Search = null, повертаються всі категорії товарів – Якщо в © Search передається значення, фільтруються назви AS

SET NOCOUNT ON

SELECT ProductCategoryName, ProductCategoryDescription FROM dboProductCategory WHERE ProductCategoryName = @Search OR @Search IS NULL

IF @@RowCount = 0 RAISERROR(

‘Категорія’% s’ не знайдена , 14,1, @ Search)

У першому виклику ми передамо збереженій процедурі імя категорії:

EXEC pProductCategory_Fetch OBX;

Буде отримано наступний результат:

ProductCategoryName ProductCategoryDescription

OBX                               OBX stuff

Якщо процедура pProductCategory_Fetch виконується без явної вказівки параметра, то змінної @ Search присвоюється значення за замовчуванням – null, що робить істинним виконання умови пропозиції WHERE для всіх рядків таблиці ProductCategory

EXEC pProductCategory_Fetch

ProductCategoryName ProductCategoryDescription

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

OBX                            OBX stuff

Toy                               Kids stuff

Video                            stunt kite contexts and lessons,

and Outer Banks videos

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*