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


         

и типом, созданного владельцем БД


  • /* проверка существования в системном каталоге объекта с данным именем


  • и типом, созданного владельцем БД */


  • If exists (select * from sysobjects where Id = object_id(?dbo.NEW_BOOKS?) and sysstat & Oxf = 4)


  • /* если объект существует, то сначала его удалим из системного каталога */


  • drop procedure dbo.NEW_BOOKS


  • CREATE PROCEDURE NEW_BOOKS (@SBN varchar(12).@TITL varchar(255).@AUTOR


  • varchar(30),@COAUTOR varchar(30).@YEARIZD 1nt,@PAGES INT,@NUM_EXEMPL INT)


  • /* процедура ввода новой книги с указанием количества экземпляров данной книги


  • параметры


  • @ISBN varchar(12) шифр книги


  • @TITL varchar(255) название


  • @AUTOR varcharOO) автор


  • @COAUTOR varcharOO) соавтор


  • @YEARIZD int год издания


  • @PAGES INT количество страниц


  • @NUM_EXEMPL INT количество экземпляров


  • */


  • AS


  • DECLARE @TEK int


  • declare @INV int


  • INSERT INTO BOOKS VALUES(@ISBN.@TITL.@AUTOR.@COAUTOR,@YEARIZD.@PAGES)


  • /* назначение значения текущего счетчика оставшихся к вводу экземпляров*/


  • SELECT @ТЕК = @NUM_EXEMPL


  • /* определение максимального значения инвентарного номера в библиотеке */


  • 265

  • SELECT @INV - SELECT MAX( ID_EXEMPLAR) FROM EXEMPLAR


  • /* организуем цикл для ввода новых экземпляров данной книги */


  • WHILE @TEK>0 /* пока количество оставшихся экземпляров больше нуля */


  • BEGIN


  • insert Into EXEMPLAR (IDJXEMPLAR.ISBN.DATA_IN.DATA_OUT.EXIST)


  • VALUES (@INV,@ISBN.GETDATE().GetDate(). TRUE)


  • /* изменение текущих значений счетчика и инвентарного номера */


  • SELECT @ТЕК = @ТЕК - 1


  • SELECT @INV = @INV + 1


  • End /* конец цикла ввода данных о экземпляре книги*/


  • GO


  • Хранимые процедуры могут вызывать одна другую. Создадим хранимую процедуру, которая возвращает номер читательского билета для конкретного читателя.

  • if exists (select * from sysobjects where id = object_id(?dbo. CK_READER?) and sysstat & Oxf = 4)


  • /* если объект существует, то сначала его удалим из системного каталога */


  • drop procedure dbo.CK_READER


  • /* Процедура возвращает номер читательского билета, если читатель есть и 0 в


  • противном случае.

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