здесь мы снова используем функцию
/* здесь мы снова используем функцию преобразования типа, но в этом случае нам необходимо преобразовать поле BIRTH_DAY из типа smalldatetime к типу varchar(S), в котором задан входной параметр @BIRTH_DAY */
Select @Y_N =0
/* присваиваем выходному параметру @Y_N значение 0 (ноль), что соответствует тому,что данный читатель ранее в нашей библиотеке не был записан */
Select @COUNT__BOOKS = 0
/* присваиваем выходному параметру, хранящему количество книг, числящихся за читателем значение ноль */
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, что соответствует тому, что данный читатель ранее в нашей библиотеке был записан */
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.