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


         

N_R не равно нулю, то


  • за читателем значение ноль */


  • Return 1


  • END


  • else


  • /* если значение переменной @ N_R не равно нулю, то читатель с заданными


  • характеристиками был ранее записан в нашей библиотеке */


  • BEGIN


  • /* определение количества книг у читателя с найденным номером читательского


  • билета */


  • select @COUNT_BOOKS = COUNT(INV_NUMBER) FROM EXEMPLAR WHERE


  • NUM_READER = @N_R


  • select @Count_books = COALESCE( @COUNT_BOOKS.0)


  • /* присваиваем выходному параметру @COUNT_BOOKS значение, равное количеству


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


  • @COUNT_BOOKS было присвоено неопределенное значение, то мы заменим его


  • на ноль, используя для этого встроенную функцию COALESCE(@COUNT_BOOKS.0),


  • которая возвращает первое определенное значение из списка значений,


  • заданных в качестве ее параметров */


  • Select @Y_N = 1


  • /* присваиваем выходному параметру @Y_N значение 1, что соответствует тому,


  • что данный читатель ранее в нашей библиотеке был записан */


  • 268

  • Select @NUM_READER = @N_R


  • /* присваиваем выходному параметру @NUM_READER определенный ранее номер


  • читательского билета */


  • return 0


  • end


  • Теперь посмотрим, как работает наша новая процедура, для этого в режиме интерактивного выполнения запросов (то есть в Query Analyzer MS SQL Server 7.0) запишем следующую последовательность команд:

  • -- пример использования выходных параметров при вызове процедуры


  • -- new reader


  • -- зададим необходимые нам переменные


  • Declare @K int. @N int. @B int


  • exec NEW_READER ?Пушкин В.В.?.?Литовский 22-90?.


  • ?333-55-99?. ?444-66-88?. ?01.06.83?. @NUM_READER =@K OUTPUT.


  • @Y_N = @N OUTPUT.@COUNT_BOOKS = @B OUTPUT


  • -- теперь выведем результаты работы нашей процедуры используя ранее


  • -- определенные нами переменные


  • Select ?номер билета?,@К.?да - нет?,@N.?кол-во книг?.@В


  • Мы получим результат:

    Номер билета да - нет кол-во книг
    18 0 0
    Если же мы снова запустим нашу процедуру с теми же параметрами, то есть повторим выполнение подготовленных выше операторов, то получим уже иной ответ:


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