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


Хранимые процедуры - часть 10


  • за читателем значение ноль */
  • 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

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




    - Начало -  - Назад -  - Вперед -