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



         

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


  • @BIRTH_DAY varchar(8),
  • @NUM_READER int OUTPUT,
  • /* выходной параметр, определяющий номер читательского билета*/
  • @Y_N int OUTPUT.
  • /* выходной параметр, определяющий был ли читатель ранее записан
  • в библиотеку*/
  • @COUNT_BOOKS int OUTPUT
  • /* выходной параметр, определяющий количество книг, которое числится
  • за читателем*/)
  • AS
  • /* переменная, в которой будет храниться номер читательского билета,
  • если читатель уже был записан в библиотеку */
  • DECLARE @N_R int
  • /* определение наличия читателя */
  • EXEC @N_R = CK_READER @NAME_READER,@BIRTH_DAY
  • IF @N_R= 0 Or @N_R Is Null
  • /* если читатель с заданными характеристиками не найден, т. е. переменной
  • @N_R присвоено значение нуль или ее значение неопределено, перейдем
  • к назначению для нового читателя нового номера читательского билета */
  • BEGIN
  • /* так как мы номер читательского билета определили как инкрементное поле,
  • то в операторе ввода мы его не указываем система сама назначит новому
  • читателю очередной номер */
  • 267

  • INSERT INTO READER(NAME_READER,ADRES.HOOM_PHONE.WORK_PHONE.ВIRTH_DAY)
  • VALUES (@NAME_READER.@ADRES.@HOOM_PHONE.@WORK_PHONE.Convert(smal1datetime,
  • @BIRTH_DAY.4) )
  • /* в операторе INSERT мы должны преобразовать символьную переменную @BIRTH_DAY
  • в тип данных sma11datetime, который определен для поля дата рождения
  • 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
  • /* здесь мы снова используем функцию преобразования типа, но в этом случае
  • нам необходимо преобразовать поле BIRTH_DAY из типа smalldatetime
  • к типу varchar(8), в котором задан входной параметр @BIRTH_DAY */
  • Select @Y_N =0
  • /* присваиваем выходному параметру @Y_N значение 0 (ноль), что
  • соответствует тому,что данный читатель ранее в нашей библиотеке
  • не был записан */
  • Select @COUNT_BOOKS = 0
  • /* присваиваем выходному параметру, хранящему количество книг, числящихся



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