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


         

здесь мы снова используем функцию



/* здесь мы снова используем функцию преобразования типа, но в этом случае нам необходимо преобразовать поле 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.


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