Процедура возвращает новый номер читательского
N'IsProcedure') = 1)
drop procedure [dbo].[NEW_READER] GO
/* процедура проверки существования читателя с заданными значенияии вводимых параметров
Процедура возвращает новый номер читательского билета, если такого читателя не было сообщает старый номер и количество книг, которое должен читатель в противном случае */
CREATE PROCEDURE NEW_READER (@NAME_READER varchar(30) .(PADRES varchar(40).@HOOM_PHONE char(9).@WORK_PHONE char(9).
@BIRTH_DAY varchar(8). @NUM_READER int OUTPUT.
/* выходной параметр, определяющий номер читательского билета*/
@Y_N int OUTPUT,
/* выходной параметр, определяющий был ли читатель ранее записан в библиотеку*/
@COUNT_BOOKS int OUTPUT
/* выходной параметр, определяющий количество книг, которое числится за читателем*/)
AS
/* переменная, в которой будет храниться номер читательского билета, если читатель уже был записан в библиотеку */
DECLARE @N_R int
/* определение наличия читателя */
ЕХЕС @N_R = CK_READER'@NAME_READER.@BIRTH_DAY
IF @N_R= 0 Or @N_R Is Null
/* если читатель с заданными характеристиками не найден, т. е. переменной @N_R присвоено значение нуль или ее значение неопределено, перейдем к назначению для нового читателя нового номера читательского билета */
BEGIN
/* так как мы номер читательского билета определили как инкрементное поле, то в операторе ввода мы его не указываем система сама назначит новому читателю очередной номер */
INSERT INTO READER(NAME_READER,ADRES,HOOM_PHONE,WORK_PHONE,ВIRTH_DAY)
VALUES (@NAME_READER,(PADRES, @HOOM_PHONE.@WORK_PHONE,Convert(sma11dateti me, @BIRJH_DAY,4) )
/* в операторе INSERT мы должны преобразовать символьную переменную @BIRTH_DAY в тип данных smalldatetime, который определен для поля дата рождения BIRTH_DAY. Это преобразование мы сделаем с помощью встроенной функции Transact SQL Convert */
/* теперь определим назначенный номер читальского билета */
select @NUM_READER = NUM_READER FROM READER
WHERE NAME_READER = @NAME_READER AND
convert(varchar(8),BIRTH_DAY,4)=@BIRTH_DAY