Базы данных - модели, разработка, реализация


         

2 процедуры COUNT_EX последний оператор


Так, например, в версии 2 процедуры COUNT_EX последний оператор исполнения этой процедуры имеет вид: /

  • EXEC @Ntek = COUNT_EX:2 @ISBN


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

  • EXEC =...


  • =...


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

  • CREATE PROCEDURE COUNT_BOOKS (@YEARIZD Int - Year(GetDate( )).


  • @PUBLICH varchar(20))


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


  • в конкретном году


  • параметры:


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


  • @PUBLICH название издательства


  • */


  • AS


  • DECLARE @TEK_Count int


  • Select @TEK count - Select COUNT(ISBN)


  • 262

  • From BOOKS


  • Where YEARIZD = @YEARIZD AND PUBLICH =@PUBLICH


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


  • /* при формировании результата работы нашей процедуры мы должны учесть,


  • что в нашей библиотеке, возможно, нет ни одной книги некоторого издательства


  • для заданного года. Результат выполнения запроса SELECT в этом случае будет


  • иметь неопределенное значение, но анализировать все-таки лучше числовые


  • значения. Поэтому в качестве возвращаемого значения мы используем результаты


  • работы специальной встроенной функции Transact SQL COALESCE (nl.n2, ... ,nm).


  • которая возвращает первое конкретное, то есть не равное NULL, значение из


  • списка значений nl.n2, ... ,nm. */


  • Return COALESCE (@TEK_Count.O)


  • Теперь вызовем эту процедуру, для этого подготовим переменную, куда можно поместить результаты выполнения процедуры.

  • declare @N int •


  • Exec @N - COUNT_BOOKS @PUBLICH = ?Питер?


  • В переменной @N мы получим количество книг в нашей библиотеке, изданных издательствам "Питер" в текущем году.

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