Теория баз данных

у вас определено несколько версий



/* Присвоим переменной @Ntek результаты выполнения хранимой процедуры

COUNT_EX */

ЕХЕС @Ntek = COUNT_EX @ISBN

Если у вас определено несколько версий хранимой процедуры, то при вызове вы можете указать номер конкретной версии для исполнения. Tак, например, в версии 2 процедуры COUNT_EX последний оператор исполнения этой процедуры имеет вид:

ЕХЕС @Ntek = COUNT_EX:2 @ISBN

Однако если в процедуре определены значения входных параметров по умолчанию, то при запуске процедуры могут быть указаны значения не всех параметров. В этом случае оператор вызова процедуры может быть записан в следующем виде:

ЕХЕС <имя процедуры> <имя_параметра1>=<значение параметра1>...

<имя_napaмeтpaN>=<значение параметрамN>..

Например, создадим процедуру, которая считает количество книг, изданных конкретным издательством в конкретном году. При создании процедуры зададим для года издания по умолчанию значение текущего года.

CREATE PROCEDURE COUNT_BOOKS (@YEARIZD Int = Year(GetDate()),

@PUBLICH varchar(20))

/* процедура подсчета количества книг конкретного издательства, изданных в конкретом году

параметры:

@YEARIZD Int год издания

(PPUBLICH название издательства */ AS

DECLARE @TEK_Count int Select

@TEK count = Select COUNT(ISBN)

From BOOKS

Where YFARIZD = @YEARIZD AND PUBLICH =@PUBLICH

/* одновременно с исполнением оператора Select мы присваиваем результаты его работы определенной ранее переменной @TEK_Count */

/* при формировании результата работы нашей процедуры мы должны учесть, что в нашей библиотеке, возможно, нет ни одной книги некоторого издательства для заданного года. Результат выполнения запроса SELECT в этом случае будет иметь неопределенное значение, но анализировать все-таки лучше числовые значения. Поэтому в качестве возвращаемого значения мы используем результаты работы специальной встроенной функции Transact SQL COALESCE (nl.n2.....nm), которая возвращает первое конкретное, то есть не равное NULL, значение из списка значений nl.n2....,nm. */

Содержание  Назад  Вперед