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


Хранимые процедуры - часть 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
    • /* присваиваем выходному параметру, хранящему количество книг, числящихся



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



      Книжный магазин