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


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


В качестве параметров передаем фамилию и дату рождения */

  • CREATE PROCEDURE CK_READER (@FIRST_NAME varchar(30) ,@BIRTH_DAY varchar(12))
  • AS
  • /*опишем переменную, в которой будет храниться номер читательского билета*/
  • DECLARE @NUM_READER INT
  • /* определение наличия читателя */
  • select @NUM_READER = select NUM_READER from READERS
  • WHERE FIRST_NAME = @ FIRST_NAME AND
  • AND convert (varchar (8) .BIRTH_DAY.4)=@BIRTH_DAY
  • RETURN COALESCE(@NUM_READER.0)
  • Мы здесь использовали функцию преобразования типа данных dataTime в тип данных varchar(8). Это было необходимо сделать для согласования типов данных при выполнении операции сравнения. Действительно, входная переменная @BIRTH_DAY имеет символьный тип (varchar), а поле базы данных BIRTH_DAY имеет тип SmallDateTime.

    Хранимые процедуры допускают наличие нескольких выходных параметров. Для этого каждый выходной параметр должен после задания своего типа данных иметь дополнительное ключевое слово OUTPUT. Рассмотрим пример хранимой процедуры с несколькими выходными параметрами.

    266

    Создадим процедуру ввода нового читателя, при этом внутри процедуры выполним проверку наличия в нашей картотеке данного читателя, чтобы не назначать ему новый номер читательского билета. При этом выходными параметрами процедуры будут номер читательского билета, признак того, был ли ранее записан читатель с данными характеристиками в нашей библиотеке, а если он был записан, то сколько книг за ним числится.

    • /* проверка наличия данной процедуры в нашей БД*/
    • if exists (select * from sysobjects where id =
    • object_id(N?[dbo] [NEW_READER]?) and OBJECTPROPERTYdd. N?sProcedure?) = 1)
    • drop procedure [dbo] [NEW_READER]
    • GO
    • /* процедура проверки существования читателя с заданными значениями вводимых
    • параметров
    • Процедура возвращает новый номер читательского билета, если такого читателя не
    • было сообщает старый номер и количество книг которое должен читатель в
    • противном случае */
    • CREATE PROCEDURE NEW_READER (@NAME_READER varchar(30).@ADRES
    • va rcha r(40).@HOOM_PHONE char(9).@WORK_PHONE char(9).



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



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