15
Library Project Sql Stored Procedures CREATE PROCEDURE AdultMember (@FirstName varchar(15), @LastName varchar(15), @MiddleInitial char(1), @MemberID smallint OUTPUT, @PhoneNumber varchar(10), @ExpirationDate smallint, @ZipCode varchar(5), @Street smallint, @State smallint, @City smallint ) AS BEGIN IF @FirstName IS NULL BEGIN --RAISERROR('Adult FirstName is not null',15,1); return-15 END IF @LastName IS NULL BEGIN --RAISERROR('Adult LastName is not null',15,1); return-15 END IF @MiddleInitial IS NULL BEGIN --RAISERROR('Adult FirstName is not null',1); return-1 END IF @MemberID IS NULL OR @MemberID<0 BEGIN --RAISERROR('Adult MemberID is not null',1); return-1 END IF @PhoneNumber IS NULL BEGIN --RAISERROR('Adult PhoneNumber is not null',10);

Library Project Stored Procs

  • Upload
    nwbgh

  • View
    704

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Library Project Stored Procs

Library Project Sql Stored Procedures

CREATE PROCEDURE AdultMember

(@FirstName varchar(15), @LastName varchar(15), @MiddleInitial char(1), @MemberID smallint OUTPUT, @PhoneNumber varchar(10), @ExpirationDate smallint, @ZipCode varchar(5), @Street smallint, @State smallint, @City smallint)

ASBEGIN IF @FirstName IS NULL BEGIN --RAISERROR('Adult FirstName is not null',15,1); return-15 END IF @LastName IS NULL BEGIN --RAISERROR('Adult LastName is not null',15,1); return-15 END IF @MiddleInitial IS NULL BEGIN --RAISERROR('Adult FirstName is not null',1); return-1 END IF @MemberID IS NULL OR @MemberID<0 BEGIN --RAISERROR('Adult MemberID is not null',1); return-1 END IF @PhoneNumber IS NULL BEGIN --RAISERROR('Adult PhoneNumber is not null',10); return-10 END IF @ExpirationDate IS NULL BEGIN --RAISERROR('Adult ExpirationDate is not null',1); return-1 END IF @ZipCode IS NULL

Page 2: Library Project Stored Procs

BEGIN --RAISERROR('Adult ZipCode is not null',5); return-5 END IF @Street IS NULL BEGIN --RAISERROR('Adult Street is not null',1); return-1 END IF @State IS NULL BEGIN --RAISERROR('Adult State is not null',1); return-1 END IF @City IS NULL BEGIN --RAISERROR('Adult City is not null',1); return-1 END --Need to wrap the INSERTs, UPDATEs, and DELETEs in a transaction DJL INSERT INTO member(firstName, middleinitial, lastname) VALUES(@firstName, @MiddleInitial, @LastName); select @memberid = SCOPE_IDENTITY(); INSERT INTO adult(member_no, phone_no, city, [state], street, zip, expr_date) VALUES(@MemberID, @PhoneNumber, @City, @State, @Street, @ZipCode, @ExpirationDate); END BEGIN TRY

EXEC @MemberID = @MemberID'Nana', 'W', 'Boama', '3107 petre st', 'chesapekae', 'VA', '23325', '', '03/05/2010', 0; END TRY BEGIN CATCH

PRINT 'Test memberid: FAIL -- CAUGHT Exception'; END CATCH IF ( SELECT COUNT(*)

FROM member AS m INNER JOIN adult AS a ON m.member_no = a.member_no WHERE m.member_no = m.member_no) = 1 PRINT 'Test MemberID: PASS -- memberid = ' + CAST(@memberID AS

varchar); ELSE

PRINT 'Test MemberID: FAIL -- memberid = ' + CAST(@memberID AS varchar);

Page 3: Library Project Stored Procs

CREATE PROCEDURE JuvenileMember

(@FirstName varchar(15), @LastName varchar(15), @MiddleInitial char(1), @MemberID smallint OUTPUT, @BirthDate datetime, @AdultSponsorID smallint)ASBEGIN IF @FirstName IS NULL BEGIN --RAISERROR('Juvenile FirstName is null',15,1); return-15 END IF @LastName IS NULL BEGIN --RAISERROR('Juvenile LastName is null',15,1); return-16 END IF @MiddleInitial IS NULL BEGIN --RAISERROR('Juvenile FirstName is null',1); return-17 END

IF @MemberID IS NULL OR @MemberID<0 BEGIN --RAISERROR('Juvenile MemberID is null',1); return-18 END IF @AdultSponsorID IS NULL OR @AdultSponsorID<0 BEGIN --RAISERROR('Adult Sponsor ID is null',1); return-19 END

IF @BirthDate IS NULL BEGIN --RAISERROR('Birthdate is null',1); return-20 END

--Need to wrap the INSERTs, UPDATEs, and DELETEs in a transaction DJL INSERT INTO member(firstName, middleinitial, lastname) VALUES(@firstName, @MiddleInitial, @LastName); select @memberid = SCOPE_IDENTITY(); INSERT INTO juvenile(member_no, adult_member_no, birth_date) VALUES(@MemberID, @AdultSponsorID, @BirthDate END

Page 4: Library Project Stored Procs

CREATE PROCEDURE AddBook @ISBN int, @Translation nvarchar (8) = NULL, @Cover nvarchar (8) = NULL, @Title nvarchar (63), @Author nvarchar (31), @Synopsis text = NULL, @Loanable nchar (1), @CopyNo smallint OUTPUT

AS --Test for null values. IF @ISBN is NULL OR @Loanable is NULL OR @Title is NULL OR @Author is NULL BEGIN RAISERROR('Invalid data entry.',11,1) RETURN END

--Test to see if the item exists in library. DECLARE @ItemCount int SELECT @ItemCount = count(*) FROM dbo.item as it WHERE it.isbn = @ISBN IF @ItemCount < 1 --The item doesn't exist so add it. BEGIN BEGIN TRANSACTION DECLARE @TitleNo int --Add record to the title table first. INSERT dbo.title (title,author,synopsis) VALUES (@Title,@Author,@Synopsis) IF @@Error <> 0 BEGIN RAISERROR('Cannot add item.',11,1) ROLLBACK TRANSACTION RETURN END

SET @TitleNo = @@IDENTITY --Add record to the item table next. INSERT dbo.item (isbn,title_no,translation,cover,loanable) VALUES (@ISBN,@TitleNo,@Translation,@Cover,@Loanable) IF @@ERROR <> 0 BEGIN RAISERROR('Cannot add item.',11,1) ROLLBACK TRANSACTION RETURN END

--Add record to the copy table next. SET @CopyNo = 1 INSERT dbo.copy

Page 5: Library Project Stored Procs

(isbn,copy_no,title_no,on_loan) VALUES (@ISBN,@CopyNo,@TitleNo,'N') IF @@ERROR <> 0 BEGIN

RAISERROR('Cannot add item.',11,1) ROLLBACK TRANSACTION RETURN END COMMIT TRANSACTION END ELSE BEGIN --The item already exists. Add another copy. --First determine what the title number is. SELECT @TitleNo = title_no FROM dbo.item WHERE isbn = @ISBN --Then determine what the copy number should be --by counting how many copies already exist. DECLARE @CopyCount int SELECT @CopyCount = count(*) FROM dbo.copy as co WHERE co.isbn = @isbn --The latest copy # should be the count + 1. SET @CopyNo = @CopyCount + 1 BEGIN TRANSACTION --Add record to the copy table. INSERT dbo.copy (isbn,copy_no,title_no,on_loan) VALUES (@ISBN,@CopyNo,@TitleNo,'N') IF @@ERROR <> 0 BEGIN RAISERROR('Cannot add item.',11,1) ROLLBACK TRANSACTION RETURN END COMMIT TRANSACTION END

CREATE PROC AddCopy

(@isbn int,@copynum smallint)

AS BEGIN

IF @isbn IS NULLBEGIN--RAISERRORreturn -1;END

Page 6: Library Project Stored Procs

IF @copynum IS NULLBEGIN--RAISERRORreturn -1;END

SELECT title, out_date, due_date, translation, author, loanable, member_no, coverFROM copy INNER JOIN title ON copy.title_no = copy.title_no

INNER JOIN item ON item.isbn = copy.isbn LEFT OUTER JOIN loan ON loan.isbn = copy.isbn AND loan.copy_no = copy.copy_no

WHERE copy.isbn = @isbn AND copy.copy_no = @copynum;

END

CREATE PROCEDURE CheckInItem(@isbn int, @copyNumber smallint ) AS BEGIN IF @isbn IS NULL BEGIN --RAISERROR return -1; END IF @copyNumber is NULL BEGIN --RAISERROR return -1; END --Need to wrap the INSERTs, UPDATEs, and DELETEs in a transaction DJLDECLARE @loanID smallint; INSERT INTO loanhist(isbn, copy_no) --Need to populate other columns in loanhist DJL VALUES(@isbn, @copyNumber) UPDATE copy SET on_loan ='N' WHERE isbn = @isbn AND copy_no = @copyNumber DELETE FROM loan WHERE isbn = @isbn AND copy_no = @copyNumber END

Page 7: Library Project Stored Procs

CREATE PROC CheckOutItem(@isbn int, @copyNumber smallint, @memberNumber smallint ) AS BEGIN IF @isbn IS NULL BEGIN --RAISERROR return -1; END IF @copyNumber is NULL BEGIN --RAISERROR return -1; END IF @memberNumber IS NULL BEGIN --RAISERROR return -1; END DECLARE @ItemCount int SELECT @ItemCount = COUNT(*) FROM [dbo].[item] as it

join [dbo].[copy] as co onit.isbn = co.isbn

WHERE it.isbn = @isbn AND co.copy_no = @copyNumber IF @ItemCount < 1 BEGIN

RAISERROR('item does not exist in this library.', 11,1)Return

END DECLARE @Loanable nvarchar (1) SELECT @Loanable = loanable FROM [dbo].[item] WHERE isbn = @isbn IF @Loanable ='N' BEGIN RAISERROR('Check out not successful, Item not loanable,', 11,1) RETURN END DECLARE @OnLoan nvarchar (1) SELECT @OnLoan = on_loan FROM [dbo].[copy] WHERE isbn = @isbn AND copy_no = @copyNumber IF @Loanable = 'Y' BEGIN RAISERROR('Check out not successful,',12,1) END DECLARE @TitleNo int SELECT @TitleNo = title_no FROM [dbo].[copy] WHERE isbn = @isbn AND copy_no = @copyNumber

Page 8: Library Project Stored Procs

DECLARE @OutDate datetime DECLARE @DueDate datetime SET @OutDate = GETDATE() SET @DueDate = DATEADD(DAY, 14, GETDATE()) BEGIN TRANSACTION UPDATE [dbo].[copy] SET on_loan = 'Y' WHERE isbn = @isbn AND copy_no = @copyNumber if @@ERROR <> 0 BEGIN RAISERROR('item not checked out,',11,1) ROLLBACK TRANSACTION RETURN END INSERT [dbo].[loan]

(isbn,copy_no, title_no, member_no, out_date, due_date) VALUEs (@isbn, @copyNumber, @TitleNo, @memberNumber, @OutDate, @DueDate) if @@ERROR <> 0 BEGIN RAISERROR('Error, item not checked out.',11,1) ROLLBACK TRANSACTION RETURN END END

CREATE PROC ConvertJuvToAdult

(@memberID smallint)

ASBEGIN

IF @memberid IS NULLBEGIN

--RAISERRORreturn -1;

END

SELECT juvenile.member_no, juvenile.birth_date, juvenile.adult_member_no, adult.street, adult.city, adult.state, adult.zip, adult.phone_no, adult.expr_dateFROM dbo.adult Adult, dbo.juvenile

Page 9: Library Project Stored Procs

WHERE adult.member_no = juvenile.member_noAND juvenile.member_no = adult.member_noSELECT juvenile.member_no, juvenile.adult_member_no, juvenile.birth_date, adult.street, adult.city, adult.state, adult.zip, adult.phone_no, adult.expr_dateFROM dbo.adult Adult, dbo.juvenile Juvenile, dbo.member MemberWHERE Adult.member_no = Juvenile.adult_member_noAND Juvenile.member_no = Member.member_noAND Member.member_no = Juvenile.member_no

END

CREATE PROC DeleteMember @MemberID int AS --Test for null values. IF @MemberID is NULL BEGIN RAISERROR('Invalid data entry.',11,1) RETURN END --Test for adult member. DECLARE @AdultCount int SELECT @AdultCount = count(*) FROM adult WHERE member_no = @MemberID IF @AdultCount > 0 BEGIN BEGIN TRANSACTION DELETE dbo.adult WHERE member_no = @MemberID --Test for successful deletion. if @@ERROR <> 0 BEGIN RAISERROR('Error, member not deleted.',11,1) ROLLBACK TRANSACTION RETURN END COMMIT TRANSACTION RETURN END --Test for juvenile member. DECLARE @JuvenileCount int SELECT @JuvenileCount = count(*) FROM juvenile WHERE member_no = @MemberID IF @JuvenileCount > 0 BEGIN

Page 10: Library Project Stored Procs

BEGIN TRANSACTION DELETE dbo.juvenile WHERE member_no = @MemberID --Test for successful deletion. if @@ERROR <> 0 BEGIN RAISERROR('Error, member not deleted.',11,1) ROLLBACK TRANSACTION RETURN

ENDCOMMIT TRANSACTIONRETURN

END

CREATE PROC GetItem

( @isbn int, @copyno smallint)

ASBEGIN IF @isbn IS NULL BEGIN --RAISERROR return -1; END

IF @copyno IS NULL BEGIN --RAISERROR return -1; END --Test to see if the item exists in library.

DECLARE @ItemCount int SELECT @ItemCount = count(*) FROM [dbo].[item] as it

JOIN [dbo].[copy] as co ON it.isbn = co.isbn

WHERE it.isbn = @isbn AND co.copy_no = @CopyNo IF @ItemCount < 1 BEGIN RAISERROR('Item does not exist in this library.',11,1) RETURN END

SELECT title, author, translation, cover, loanable, member_no, out_date, due_date FROM copy INNER JOIN title ON copy.title_no = title.title_no

Page 11: Library Project Stored Procs

INNER JOIN item ON item.isbn = copy.isbn LEFT OUTER JOIN loan ON loan.isbn = copy.isbn AND loan.copy_no = copy.copy_no WHERE copy.isbn = @isbn AND copy.copy_no = @copyno;

END

CREATE PROCEDURE GetItems

( @memberno smallint)

ASBEGIN IF @memberno IS NULL BEGIN --RAISERROR return -1; END

SELECT loan.isbn, loan.copy_no, title, author, out_date, due_date FROM loan INNER JOIN title ON loan.title_no = title.title_no INNER JOIN item ON item.isbn = loan.isbn WHERE member_no = @memberno;

END

CREATE PROCEDURE GetMemberByItem(@isbn int, @copyno smallint ) AS BEGIN IF @isbn IS NULL BEGIN --RAISERROR return -1; END IF @copyno IS NULL BEGIN --RAISERROR return -1; END SELECT title, author, translation, cover, loanable, member_no, out_date, due_date FROM copy INNER JOIN title ON copy.title_no = title.title_no

Page 12: Library Project Stored Procs

INNER JOIN item ON item.isbn = copy.isbn LEFT OUTER JOIN loan ON loan.isbn = copy.isbn AND loan.copy_no = copy.copy_no WHERE copy.isbn = @isbn AND copy.copy_no = @copyno; END

CREATE PROC SetExpirationDate(@memberID smallint)

ASBEGIN

IF @memberid IS NULLBEGIN

--RAISERRORreturn -1;

END

DECLARE @OutDate datetimeDECLARE @DueDate datetimeSET @OutDate = GETDATE()SET @DueDate = DATEADD(DAY,14,GETDATE())

end