SlideShare a Scribd company logo
1 of 22
Tim Kunze SQL Developer/DBA Portfolio
Teaser Rate Offer Calculator I got one of those teaser offers from Bank of America so I thought, “wouldn’t it be nice to have an application that would tell you whether using the offer to pay off another credit card would be worthwhile?”  Rather than go search the internet to find one, I decided it would be more fun to write it myself.  So, here it is: So, here’s how it works:  You enter the line of credit available on the offer, the fee for the advance and the teaser interest rate in the “Available Calculations”.    Then, you enter the payoff amount, interest rate and the number of months the offer runs (ie. Payoff in May and offer runs through December = 8 months).  Once you have all this data entered in the boxes, click the “Calc Savings” button (or press Ctrl + s).  If the payoff is greater than the line of credit, the line of credit is used in the calculations.  If the payoff is less than the line of credit, the payoff is used.
Library Project Utilizes the Microsoft Library Database Created stored procedures for the following functions: Add an adult member Add a juvenile member Check in a book Check out a book Add a book to the database Renew Membership Change a juvenile member to adult Update an adult member’s information
Add Adult /* AddAdult Stored Procedure (dbo.AddAdult_SP) This procedure is executed when a new adult member is added to the Library database.   INPUT (and format):	                                  Position # Name member.lastnamevarchr(15)	1 member.firstnamevarchar(15)	2 member.middleinitialchar(1)	7     OPTIONAL (NULL) 	Mailing Address adult.streetvarchar(15)	3 adult.cityvarchar(15)	4 adult.statechar(2)		5      adult.zip char(10)		6 	Phone Number phone_nochar(13)		8     OPTIONAL (NULL)   RETURN VALUES: 	-1	Error on insertion of member row 	-2	Error on insertion of adult row 	New Member Number if successful */ CREATE PROC dbo.AddAdult_SP 	@lastnamevarchar(15), @firstnamevarchar(15), @street varchar(15), 	@city varchar(15), @state char(2), @zip char(10), 	@middleinitial char(1) = NULL, @phone_no char(13) = NULL, 	@NewMember_nosmallint OUTPUT AS BEGIN TRANSACTION --  variable for returning error/success messages (troubleshooting) 	DECLARE @output_msgvarchar(150) --  Insert the new member row 	BEGIN TRY      INSERT INTO dbo.member (lastname, firstname, middleinitial) VALUES (@lastname, @firstname, @middleinitial) 		SET @NewMember_no = @@IDENTITY 	END TRY BEGIN CATCH --  ERROR! 	SET @output_msg = CAST('AddAdult_SP - ERROR:  ' AS char(23)) + 	     CAST(ERROR_NUMBER() AS varchar(5)) +  		CAST(' LINE:  ' AS char(8)) + 		CAST(ERROR_LINE() AS varchar(4)) + 		CAST(' ' AS char(1)) + ERROR_MESSAGE() 		SET @NewMember_no = -1 	     SELECT @NewMember_noNewMember#, @output_msgErrorMessage 	     ROLLBACK TRANSACTION 	     RETURN @NewMember_no 	END CATCH 	BEGIN TRY --  Insert the new adult row. INSERT INTO dbo.adult           (member_no, street, city, state, zip, phone_no, expr_date)           VALUES (@NewMember_no, @street, @city, @state, @zip, @phone_no,           DATEADD (Year, 1, getdate())) 	END TRY 	BEGIN CATCH --  ERROR!      SET @output_msg = CAST('AddAdult_SP - ERROR:  ' AS char(23)) + CAST(ERROR_NUMBER() AS varchar(5)) +  CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) +  CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @NewMember_noNewMember#, @output_msgErrorMessage 		SET @NewMember_no = -2 		ROLLBACK TRANSACTION 		RETURN @NewMember_no 	END CATCH --  Send success message! SET @output_msg = CAST('AddAdult_SP - New member # ' AS char(27)) + 	CAST(@NewMember_no AS char(8)) + 	CAST (' successfully entered!' AS char(22)) SELECT @output_msg [Success Message] COMMIT TRANSACTION RETURN @NewMember_no ; go
Testing: BAD DATA! INPUT: -- NO DATA! DECLARE @ret int EXEC @ret =  dbo.AddAdult_SP SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure AddAdult_SP, Line 0 Procedure or function 'AddAdult_SP' expects parameter '@lastname', which was not supplied. INPUT: -- BAD DATA (missing parameter) DECLARE @ret int EXEC @ret =  dbo.AddAdult_SP Jones, Fred, [Main Place], Enid, OK SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure AddAdult_SP, Line 0 Procedure or function 'AddAdult_SP' expects parameter '@zip', which was not supplied. GOOD DATA! INPUT: DECLARE @ret int EXEC @ret =  dbo.AddAdult_SP Kunze, Arnold, [E 3rd Place], Tulsa, OK, 74112,      DEFAULT, DEFAULT, @ret SELECT @ret [Returned Value] SELECT firstname, lastname, street, city, state, zip, phone_no FROM dbo.adult a           JOIN dbo.member m ON m.member_no = a.member_no           WHERE lastname = 'Kunze' AND firstname = 'Arnold' Go RESULTS: Success Message AddAdult_SP - New member # 10001    successfully entered! Returned Value 10001 Firstnamelastname     street             city     state    zipphone_no Arnold	  Kunze         E 3rd Place    Tulsa OK	  74112   NULL
Add Juvenile ---------------------------------------------------------------------------------------- /* Add Juvenile Stored Procedure (dbo.AddJuvenile_SP) This procedure is executed when a new Juvenile member is added to the Library Database.   INPUT (and format):	                                Position # 	               Adult Memberr#		1     MUST EXIST                NAME member.lastnamevarchar(15)	2 member.firstnamevarchar(15)	3 member.middleinitial      char(1)	5     OPTIONAL (NULL)                 Birth Date juvenile.birth_date(datetime)	4     Check for < 18   RETURN VALUES 	-1	Error on juvenile's age 	-2	Adult sponsor doesn't have a record in the database 		(erroneous adult member #) 	-3	Error on insertion of member row 	-4	Error on insertion of juvenile row 	-5  Adult Member's card has expired 	New Member Number if successful */   CREATE PROC dbo.AddJuvenile_SP      @Adult_Member_nosmallint, @lastnamevarchar(15), @firstnamevarchar(15), @birth_datedatetime, @middleinitial char(1) = NULL,  	@NewMember_nosmallint OUTPUT AS BEGIN TRANSACTION --  variable for returning error/success messages (troubleshooting) 	DECLARE @output_msgvarchar(150), @expr_datedatetime --  Verify juvenile's age!      IF DATEADD (Year, 18, @birth_date) <= getdate()           BEGIN                SET @output_msg = 'AddJuvenile_SP- ERROR:  New member is older than 18 - must be input as adult.' SELECT @output_msgErrorMessage SET @NewMember_no = -1 ROLLBACK TRANSACTION RETURN @NewMember_no           END  IF @birth_date > getdate()           BEGIN                SET @output_msg = 	'AddJuvenile_SP - ERROR:  New member has not been born yet!' 		SELECT @output_msgErrorMessage 		SET @NewMember_no = -1 		ROLLBACK TRANSACTION 		RETURN @NewMember_no          END --  Check to see if adult member exists!     IF NOT EXISTS (SELECT member_no FROM dbo.adult          WHERE dbo.adult.member_no = @Adult_Member_no)               BEGIN 	SET @output_msg =     'AddJuvenile_SP - ERROR:  Adult sponsor for this juvenile does not exist!' 		SELECT @output_msgErrorMessage 		SET @NewMember_no = -2 		ROLLBACK TRANSACTION 		RETURN @NewMember_no               END --	Verify adult's card is current!     IF (SELECT expr_date FROM dbo.adult          WHERE adult.member_no = @Adult_Member_no) < getdate()               BEGIN 	SET @output_msg = 'AddJuvenile_SP - ERROR:  Adult member card has expired!' 		SELECT @output_msgErrorMessage 		SET @NewMember_no = -5 		ROLLBACK TRANSACTION 		RETURN @NewMember_no               END --  Insert the new member row      BEGIN TRY INSERT INTO dbo.member (lastname, firstname, middleinitial) VALUES (@lastname, @firstname, @middleinitial) 		SET @NewMember_no = @@IDENTITY      END TRY
Add Juvenile (Cont.) BEGIN CATCH --  ERROR!      SET @output_msg = CAST('AddJuvenile_SP - ERROR:  ' AS char(25)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) +  CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @NewMember_noNewMember#, @output_msgErrorMessage SET @NewMember_no = -3 ROLLBACK TRANSACTION RETURN @NewMember_no      END CATCH      BEGIN TRY --  Insert the new juvenile row.           INSERT INTO dbo.juvenile (member_no, adult_member_no, birth_date) VALUES (@NewMember_no, @Adult_Member_no, @birth_date)      END TRY      BEGIN CATCH --  ERROR!           SET @output_msg = CAST('AddJuvenile_SP - ERROR:  ' AS char(25)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) +  CAST(' ' AS char(1)) + ERROR_MESSAGE()          SELECT @NewMember_noNewMember#, @output_msgErrorMessage SET @NewMember_no = -4 ROLLBACK TRANSACTION RETURN @NewMember_no      END CATCH --  Send success message!      SET @output_msg = CAST('AddJuvenile_SP - Member # ' AS char(26)) + CAST(@NewMember_no AS char(8)) + CAST(' successfully entered!' AS char(22))      SELECT @output_msg [Success Message]      COMMIT TRANSACTION      RETURN @NewMember_no ; go
Testing: BAD DATA! INPUT: -- NO DATA! DECLARE @ret int EXEC @ret = dbo.AddJuvenile_SP SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure AddJuvenile_SP, Line 0 Procedure or function 'AddJuvenile_SP' expects parameter '@Adult_Member_no', which was not supplied. INPUT: -- BAD DATA (missing parameter - birth date) DECLARE @ret int EXEC @ret = dbo.AddJuvenile_SP 16102, Jones, Fred SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure AddJuvenile_SP, Line 0 Procedure or function 'AddJuvenile_SP' expects parameter '@birth_date', which was not supplied. INPUT: -- BAD DATA (Adult member not in DB) DECLARE @ret int EXEC @ret = dbo.AddJuvenile_SP 20000, Jones, Fred, [1/1/2000], DEFAULT, @ret SELECT @ret [Return Value] RESULTS: ErrorMessage AddJuvenile_SP - ERROR:  Adult sponsor for this juvenile does not exist! Return Value -2 GOOD DATA! INPUT: DECLARE @ret int, @Member_nosmallint SET @Member_no = (SELECT TOP(1) a.member_no FROM dbo.adult a 	JOIN dbo.member m ON m.member_no = a.member_no 	WHERE m.lastname = 'Kunze' AND m.firstname = 'Arnold') EXEC @ret =  dbo.AddJuvenile_SP @Member_no, Kunze, Dane, [1/28/1999], DEFAULT, @ret SELECT @ret [Returned Value] SELECT firstname, lastname, j.member_no, birth_date 	FROM dbo.member m 	JOIN dbo.juvenile j 		ON j.member_no = m.member_no 	WHERE firstname = 'Dane' AND lastname = 'Kunze' RESULTS: Success Message AddJuvenile_SP - Member # 10002    successfully entered! Returned Value 10002 firstnamelastnamemember_nobirth_date Dane	Kunze	10002	1999-01-28 00:00:00.000
Check In A Book ------------------------------------------------------------------------- /*Book Check In Stored Procedure (dbo.BookCheckIn_SP) This procedure is executed when a book is being checked in. INPUT (and format):		Position # Member_no     1MUST EXIST           Checking In Books ISBN     2 COPY     3 RETURN VALUES 	-1	Invalid member number 	-2	Member owes fines 	-3	Member's card has expired 	-4	Book & Copy combination not in DB 	-5	Book was not on loan 	-6	Error inserting into Loan History 	-7	Error updating copy 	-8	Error deleting loan 	0 if successful */ CREATE PROC dbo.BookCheckIn_SP           @member_nosmallint, @ISBN int, @copy smallint, @output smallint AS BEGIN TRANSACTION -- variable for returning error/success messages (troubleshooting) DECLARE @output_msgvarchar(150) --variable for checking if member owes fines & Count of books checked out DECLARE @Fine_Valuesmallmoney, @BooksCheckedOutint, @title varchar(63),           @title_noint, @on_loan char(1), @out_datedatetime, @due_datedatetime,           @in_datedatetime -- Verify member number IF NOT EXISTS (SELECT member_no FROM dbo.member           WHERE member.member_no = @member_no)      BEGIN           SET @output = -1           SET @output_msg = CAST('BookCheckIn_SP - ERROR:  ' AS char(25)) +      CAST('Member number ' AS char(14)) +      CAST(@member_no AS varchar(8)) +      CAST(' does not exist!' AS char(16))           SELECT @output_msgErrorMessage           ROLLBACK TRANSACTION           RETURN @output      END -- Check for outstanding fines SET @Fine_Value = (SELECT SUM(ISNULL(fine_assessed, 0)) -     (SUM(ISNULL(fine_paid, 0)) + SUM(ISNULL(fine_waived, 0)))     FROM dbo.loanhist     WHERE member_no = @member_no) IF @Fine_Value > 0     BEGIN          SET @output = -2          SET @output_msg = CAST('BookCheckIn_SP - ERROR:  ' AS char(25)) + 	CAST('Member owes fines in total of $' AS char(31)) +  	CAST(@Fine_Value AS varchar(8))          SELECT @output_msgErrorMessage          ROLLBACK TRANSACTION          RETURN @output     END --	Verify adult's card is current! IF (SELECT expr_date FROM dbo.adult          WHERE adult.member_no = @Member_no) < getdate()      BEGIN          SET @output_msg = 'BookCheckIn_SP - ERROR:  Member card has expired!'                    	SELECT @output_msgErrorMessage 	SET @output = -3 	ROLLBACK TRANSACTION 	RETURN @output     END
Check In A Book (Cont.) -- Verify if this member number actually has this book checked out! IF NOT EXISTS(SELECT * FROM dbo.loan           WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no)      BEGIN           SET @output_msg = CAST('BookCheckIn_SP - ERROR:  Member ' AS char(32)) + 	CAST(@Member_no AS varchar(8)) + CAST(' does not have ISBN 'AS char(20)) + 	CAST(@ISBN AS varchar(8)) + CAST(', copy # ' AS char(9)) + 	CAST(@Copy AS varchar(8)) + CAST(' checked out!' AS char(13))           SET @output = -5           SELECT @output_msgErrorMessage 	ROLLBACK TRANSACTION 	RETURN @output END -- Check to see if ISBN/COPY exist in DB IF NOT EXISTS (SELECT isbn, copy_no FROM dbo.copy          WHERE isbn = @ISBN AND copy_no = @Copy)     BEGIN          SET @output = -4          SET @output_msg = 'BookCheckIn_SP - ERROR:  ISBN and Copy do not exist in database!'          SELECT @output_msgErrorMessage          ROLLBACK TRANSACTION          RETURN @output      END -- Verify that book really was on loan SET @on_loan = (SELECT on_loan FROM dbo.copy          WHERE isbn = @ISBN AND copy_no = @Copy) IF @on_loan IN ('n', 'N')      BEGIN           SET @output = -5           SET @title = (SELECT TOP(1) title 	FROM dbo.copy JOIN dbo.title 	ON title.title_no = copy.title_no 	WHERE copy.isbn = @ISBN AND copy.copy_no = @Copy)          SET @output_msg = CAST('BookCheckIn_SP - ERROR:  ' AS char(25)) + 	CAST(@ISBN AS varchar(10)) + 	CAST(', COPY:  ' AS char(9)) + 	CAST(@COPY AS varchar(3)) + CAST(' - "' AS char(4)) + 	@title + CAST('" was NOT checked out!' AS char(22))          SELECT @output_msgErrorMessage          ROLLBACK TRANSACTION          RETURN @output     END -- Passed all the tests, check it in! IF (SELECT out_date FROM loan          WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no)          IS NOT NULL          SET @out_date = (SELECT out_date FROM loan 	WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no) ELSE          SET @out_date = DATEADD(DAY, 14, (SELECT due_date FROM loan 	WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no))           SET @due_date = (SELECT due_date FROM loan 	WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no)           SET @title_no = (SELECT title_no FROM loan 	WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no)           SET @in_date = getdate() -- INSERT row into dbo.loanhist BEGIN TRY     INSERT INTO dbo.loanhist 	(isbn, copy_no, out_date, title_no, member_no, due_date, in_date) 	VALUES (@ISBN, @Copy, @out_date, @title_no, @Member_no, @due_date,          @in_date) -- NOTE:  Specs didn't say anything about levying fines! END TRY BEGIN CATCH -- INSERT failed!     SET @output = -6     SET @output_msg = CAST('BookCheckIn_SP - ERROR:  ' AS char(25)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' inserting loanhist ISBN: ' AS char(26)) + 	CAST(@ISBN AS varchar(8)) +  	CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage     ROLLBACK TRANSACTION     RETURN @output END CATCH
Check In A Book (Cont.) -- UPDATE the on_loan column of the dbo.copy row! BEGIN TRY     UPDATE dbo.copy 	SET on_loan = 'N' 	WHERE isbn = @ISBN AND copy_no = @Copy END TRY BEGIN CATCH -- UPDATE failed!     SET @output = -7     SET @output_msg = CAST('BookCheckIn_SP - ERROR:  ' AS char(25)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + 	CAST(' LINE:  ' AS char(8)) + 	CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' updating copy ISBN:  ' AS char(22)) + 	CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) +  	ERROR_MESSAGE()     SELECT @output_msgErrorMessage     ROLLBACK TRANSACTION     RETURN @output END CATCH -- DELETE row from dbo.loan BEGIN TRY     DELETE dbo.loan 	WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no END TRY BEGIN CATCH -- DELETE failed!     SET @output = -8     SET @output_msg = CAST('BookCheckIn_SP - ERROR:  ' AS char(25)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' deleting loan ISBN:  ' AS char(22)) + 	CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + 	ERROR_MESSAGE()     SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END CATCH -- Book successfully checked in! SET @output = 0 SET @output_msg = 'BookCheckIn_SP - Book successfully checked in!  Have a great day!' SELECT @output_msg [Success Message] COMMIT TRANSACTION RETURN @output ; go
Testing: BAD DATA! INPUT: -- No Data! DECLARE @ret int EXEC @ret = dbo.BookCheckIn_SP SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure BookCheckIn_SP, Line 0 Procedure or function 'BookCheckIn_SP' expects parameter '@member_no', which was not supplied. INPUT: -- Member not in DB DECLARE @ret int EXEC @ret = dbo.BookCheckIn_SP 9999, 2, 1, @ret SELECT @ret [Return Value] RESULTS: ErrorMessage BookCheckIn_SP - ERROR:  Member 9999 does not have ISBN 2, copy # 1 checked out! Return Value -5 INPUT: -- Book not checked out! DECLARE @ret int EXEC @ret = dbo.BookCheckIn_SP 4, 2, 3, @ret SELECT @ret [Return Value] RESULTS: ErrorMessage BookCheckIn_SP - ERROR:  Member 4 does not have ISBN 2, copy # 3 checked out! Return Value -5 GOOD DATA! INPUT:
Check Out A Book -------------------------------------------------------------------------------- /*Book Check Out Stored Procedure (dbo.BookCheckOut_SP) This procedure is executed when a book is being checked out. INPUT (and format):		     Position # member.member_no          1	MUST EXIST      Checked Out Books ISBN          2 COPY          3 RETURN VALUES 	-1	Invalid member number 	-2	Member owes fines 	-4	Book already checked out/not loanable 	-5	Book & Copy combination not in DB 	-6	Too many books 	-7	Error inserting into Loan 	-8	Member's card has expired 	-9	Book is not loanable 	0 if successful */ CREATE PROC dbo.BookCheckOut_SP 	@member_nosmallint, @ISBN int, @copy smallint, @output smallint AS BEGIN TRANSACTION -- variable for returning error/success messages (troubleshooting) DECLARE @output_msgvarchar(150) --variable for checking if member owes fines & Count of books checked out DECLARE @Fine_Valuesmallmoney, @BooksCheckedOutint, @title varchar(63),           @title_noint, @on_loan char(1), @out_datedatetime, @in_datedatetime,           @due_datedatetime --, @Book_Table TABLE (@BT_ISBN int, @BT_Copysmallint) --table to put input ISBN/copy#s into -- Verify member number IF NOT EXISTS (SELECT member_no FROM dbo.member           WHERE member.member_no = @member_no) BEGIN      SET @output = -1      SET @output_msg = CAST('BookCheckOut_SP - ERROR:  ' AS char(26)) + CAST('Member number ' AS char(14)) + CAST(@member_no AS varchar(8)) + CAST(' does not exist!' AS char(16))      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END -- Check for outstanding fines SET @Fine_Value = (SELECT SUM(ISNULL(fine_assessed, 0)) - 	(SUM(ISNULL(fine_paid, 0)) + SUM(ISNULL(fine_waived, 0))) 	FROM dbo.loanhist 	WHERE member_no = @member_no) IF @Fine_Value > 0 BEGIN     SET @output = -2      SET @output_msg = CAST('BookCheckOut_SP - ERROR:  ' AS char(26)) + 	CAST('Member owes fines in total of $' AS char(31)) +  	CAST(@Fine_Value AS varchar(8))      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END -- Check for book already checked out SET @on_loan = (SELECT on_loan FROM dbo.copy 	WHERE isbn = @ISBN AND copy_no = @Copy) IF @on_loan IN ('y', 'Y') BEGIN      SET @output = -4      SET @title = (SELECT TOP(1) title 	FROM dbo.copy JOIN dbo.title 	ON title.title_no = copy.title_no 	WHERE copy.isbn = @ISBN AND copy.copy_no = @Copy)      SET @output_msg = CAST('BookCheckOut_SP - ERROR:  ' AS char(26)) + 	CAST(@ISBN AS varchar(10)) + 	CAST(', COPY:  ' AS char(9)) + 	CAST(@COPY AS varchar(3)) + CAST(' - "' AS char(4)) + 	@title + CAST ('" is already checked out!' AS char(25))      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END
Check Out A Book (Cont.) -- Verify that book is loanable SET @on_loan = (SELECT loanable FROM dbo.itemi          WHERE i.isbn = @ISBN) IF @on_loan NOT IN ('y', 'Y') BEGIN      SET @output = -4      SET @title = (SELECT TOP(1) title                FROM dbo.copy JOIN dbo.title 	ON title.title_no = copy.title_no 	WHERE copy.isbn = @ISBN AND copy.copy_no = @Copy)      SET @output_msg = CAST('BookCheckOut_SP - ERROR:  ' AS char(26)) + 	CAST(@ISBN AS varchar(10)) + 	CAST(', COPY:  ' AS char(9)) + 	CAST(@COPY AS varchar(3)) + CAST(' - "' AS char(4)) + 	@title + CAST ('" is not loanable!' AS char(18))      SELECT @output_msgErrorMessage 	ROLLBACK TRANSACTION 	RETURN @output END -- Check to see if ISBN/COPY exist in DB IF NOT EXISTS (SELECT isbn, copy_no FROM dbo.copy          WHERE isbn = @ISBN AND copy_no = @Copy) BEGIN     SET @output = -5     SET @output_msg = 'BookCheckOut_SP - ERROR:  ISBN and Copy do not exist in database!‘      SELECT @output_msgErrorMessage     ROLLBACK TRANSACTION      RETURN @output END -- Check to see how many books member has checked out (can't have more than 4) SET @BooksCheckedOut = (SELECT COUNT(member_no) FROM dbo.loan           WHERE loan.member_no = @member_no) IF @BooksCheckedOut > 3 BEGIN      SET @output = -6      SET @output_msg = 'BookCheckOut_SP - ERROR:  Member already has four books checked out!‘      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END --	Verify adult's card is current! IF (SELECT expr_date FROM dbo.adult           WHERE adult.member_no = @Member_no) < getdate() BEGIN      SET @output_msg = 'BookCheckOut_SP - ERROR:  Adult member card has expired!‘      SELECT @output_msgErrorMessage      SET @output = -8      ROLLBACK TRANSACTION      RETURN @output END --  Verify that book is loanable IF (SELECT loanable FROM item WHERE isbn = @ISBN) IN ('n', 'N') BEGIN     SET @output_msg = 'BookCheckOut_SP - ERROR:  Book is not loanable!‘      SELECT @output_msgErrorMessage      SET @output = -9      ROLLBACK TRANSACTION      RETURN @output END --	Everything checks out so let's check this member out! BEGIN TRY      SET @title_no = (SELECT title_no FROM dbo.copy 	WHERE isbn = @ISBN AND copy_no = @Copy)      UPDATE dbo.copy 	SET on_loan = 'Y‘ 	WHERE isbn = @ISBN AND copy_no = @Copy END TRY BEGIN CATCH      SET @output = -8      SET @output_msg = CAST('BookCheckOut_SP - ERROR:  ' AS char(26)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' updating copy for ISBN: ' AS char(25)) + 	CAST(@ISBN AS varchar(8)) + 	CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END CATCH BEGIN TRY      SET @out_date = getdate()      SET @due_date = (DATEADD(day, 14, getdate()))      INSERT INTO dbo.loan 	VALUES (@ISBN, @Copy, @title_no, @Member_no, 	@out_date, @due_date) END TRY BEGIN CATCH      SET @output = -8      SET @output_msg = CAST('BookCheckOut_SP - ERROR:  ' AS char(26)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' inserting loan for ISBN:  ' AS char(27)) + 	CAST(@ISBN AS varchar(8)) + 	CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END CATCH SET @output = 0 SET @output_msg = 'BookCheckOut_SP - Book successfully checked out!  Have a great day!' SELECT @output_msg [Success Message] COMMIT RETURN @output ; go
Add A Book ------------------------------------------------------------------------------- /*Add a Book (dbo.AddBook_SP) This procedure is executed when a book is being added. INPUT (and format):		Position #           New Book ISBN     1 Title     2     OPTIONAL (If ISBN exists) Author     3     OPTIONAL (If ISBN exists) Translation     4     OPTIONAL (If ISBN exists) Cover     5     OPTIONAL (If ISBN exists) Synopsis     6     OPTIONAL RETURN VALUES 	-1 	Error updating copy 	-2	Missing Title 	-3  	Missing Author 	-4  	Missing Translation 	-5	Missing Cover 	-6	Error inserting into Title 	-7	Error inserting into Item 	-8  	Error inserting into Copy 	ISBN if successful */ CREATE PROC dbo.AddBook_SP @ISBN int, @Title varchar(63) = NULL, @Author varchar(31) = NULL,           @Translation char(8) = NULL, @Cover char(8) = NULL,           @Synopsis text = NULL, @ISBN_outint OUTPUT AS BEGIN TRANSACTION -- Variables for use throughout this proc DECLARE @output_msgvarchar(150), @next_copy_nosmallint, @title_noint,           @output int -- Does the ISBN already exist? IF EXISTS (SELECT isbn FROM dbo.item           WHERE isbn = @ISBN)      BEGIN           BEGIN TRY               SET @next_copy_no = (SELECT MAX(copy_no) FROM dbo.copy 	          WHERE isbn = @ISBN) + 1               SET @title_no = (SELECT TOP(1) title_no FROM dbo.copy 	          WHERE isbn = @ISBN)               INSERT INTO dbo.copy 	          VALUES (@ISBN, @next_copy_no, @title_no, 'N')           END TRY           BEGIN CATCH                SET @output = -1                SET @output_msg = CAST('AddBook_SP - ERROR:  ' AS char(21)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' ' AS char(1)) + 	CAST(' LINE:  ' AS char(8)) + 	CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' updating copy for ISBN:  ' AS char(26)) + 	CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + 	          ERROR_MESSAGE() 	SELECT @output_msgErrorMessage 	ROLLBACK TRANSACTION 	RETURN @output          END CATCH      SET @output_msg = CAST('AddBook_SP - ISBN ' AS char(18)) + 	CAST(@ISBN AS varchar(8)) + CAST(' copy # ' AS char(8)) + 	CAST(@next_copy_no AS varchar(8)) + 	CAST(' successfully added!' AS char(20))      SELECT @output_msgErrorMessage      COMMIT TRANSACTION      RETURN @ISBN END -- Book doesn't already exist so must insert it into item, copy and title! -- First, verify that all the needed parameters were passed! -- GOT TITLE? IF @Title IS NULL BEGIN     SET @output_msg = 	CAST('AddBook_SP - ERROR:  Missing Title for new ISBN ' AS char(48)) + 	CAST(@ISBN AS varchar(8))      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN -2 END
Add A Book (Cont.) -- GOT AUTHOR? IF @Author IS NULL BEGIN      SET @output_msg = CAST('AddBook_SP - ERROR:  Missing Author for new ISBN ' AS char(49)) + 	CAST(@ISBN AS varchar(8))      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN -3 END -- GOT TRANSLATION? IF @Translation IS NULL BEGIN      SET @output_msg = CAST('AddBook_SP - ERROR:  Missing Translation for new ISBN ' AS char(54)) + 	CAST(@ISBN AS varchar(8))      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN -4 END -- GOT COVER? IF @Cover IS NULL BEGIN      SET @output_msg = CAST('AddBook_SP - ERROR:  Missing Cover for new ISBN ' AS char(48)) + 	CAST(@ISBN AS varchar(8))      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN -5 END -- First must insert into title to get title_no BEGIN TRY      INSERT INTO dbo.title 	VALUES (@Title, @Author, @Synopsis)      SET @title_no = @@IDENTITY END TRY BEGIN CATCH      SET @output = -6      SET @output_msg = CAST('AddBook_SP - ERROR:  ' AS char(21)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' inserting title for ISBN:  ' AS char(28)) + 	CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END CATCH -- Next, insert into item BEGIN TRY     INSERT INTO dbo.item 	VALUES (@ISBN, @title_no, @Translation, @Cover, 'Y') END TRY BEGIN CATCH      SET @output = -7      SET @output_msg = CAST('AddBook_SP - ERROR:  ' AS char(21)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' inserting item for ISBN:  ' AS char(27)) + 	CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END CATCH -- Finally, insert into copy BEGIN TRY      INSERT INTO dbo.copy 	VALUES (@ISBN, 1, @title_no, 'N') END TRY BEGIN CATCH      SET @output = -8      SET @output_msg = CAST('AddBook_SP - ERROR:  ' AS char(21)) +  	CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' inserting copy for ISBN:  ' AS char(27)) + 	CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      RETURN @output END CATCH SET @output_msg = CAST('AddBook_SP - ISBN:  ' AS char(20)) +           CAST(@ISBN AS varchar(8)) + CAST(' copy # 1' AS char(9)) +           CAST(' successfully added!' AS char(20)) SELECT @output_msg Message COMMIT TRANSACTION RETURN @ISBN ; go
Renew Membership ---------------------------------------------------------------------- /*Renew Membership (dbo.RenewMembership_SP) This procedure is executed when a membership is being renewed. INPUT (and format):	                                   Position #           Member Number		1 RETURN VALUES 	-1  Member not an adult 	-2  Member owes fines 	-3  Error updating adult 	Member Number if successful */ CREATE PROC dbo.RenewMembership_SP           @Member_noint, @Member_no_outint OUTPUT AS BEGIN TRANSACTION -- Variables for use throughout this proc DECLARE @output_msgvarchar(150), @Fine_Valuesmallmoney SET @Member_no_out = @Member_no -- Check to make sure this is an adult membership IF NOT EXISTS (SELECT member_no FROM dbo.adult WHERE member_no = @Member_no) BEGIN      SET @output_msg = CAST('RenewMembership_SP - Member number ' AS char(35)) + 	CAST(@Member_no AS varchar(8)) + 	CAST(' is not an adult.  Can not renew juveniles!' AS char(43))      SELECT @output_msgErrorMessage      SET @Member_no_out = -1      ROLLBACK TRANSACTION      RETURN @Member_no_out END -- Check to see if member owes any fines SET @Fine_Value = (SELECT SUM(ISNULL(fine_assessed, 0)) –           (SUM(ISNULL(fine_paid, 0)) + SUM(ISNULL(fine_waived, 0)))           FROM dbo.loanhist           WHERE member_no = @Member_no) IF @Fine_Value > 0      BEGIN           SET @output_msg = CAST('RenewMembership_SP - ' AS char(21)) + 	CAST('Member owes fines in total of $' AS char(31)) +  	CAST(@Fine_Value AS varchar(8))           SELECT @output_msgErrorMessage           ROLLBACK TRANSACTION 	          SET @Member_no_out = -2           RETURN @Member_no_out      END -- Update expr_date to one year from now BEGIN TRY          UPDATE adult                     SET expr_date = DATEADD(Year, 1, getdate()) END TRY BEGIN CATCH     SET @output_msg = CAST('RenewMembership_SP - ERROR:  ' AS char(29)) +  	CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' updating adult for Member #:  ' AS char(31)) + 	CAST(@Member_no AS varchar(8)) + CAST(' ' AS char(1)) + 	ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      SET @Member_no_out = -3      RETURN @Member_no_out END CATCH COMMIT TRANSACTION SET @output_msg = CAST('Member:  ' AS char(9)) + 	CAST(@Member_no AS varchar(8)) + CAST(' renewed!'AS char(9)) SELECT @output_msg [Message] RETURN @Member_no ; go
Change Juvenile To Adult /*Move over 18 year old Juveniles to adult table (dbo.ChangeJuvenile_SP) This procedure is scheduled to run periodically to move juvenile members who are now over 18 to the adult table. INPUT (and format):	Position # None RETURN VALUES 	-1  	Error updating adult 	-2	Error deleting Juvenile 	-3	No Juveniles over 18 	 0	if successful (Note:  Can't return single member                                                          number because might process  multiples.  Am outputing each processed member number on messages. */ CREATE PROC dbo.ChangeJuvenile_SP 	@Member_noint OUTPUT AS BEGIN TRANSACTION -- Variables for use throughout this proc DECLARE @output_msgvarchar(150), @row_countint, @j_expr_datedatetime -- First, check to see if any of the juveniles are over 18! BEGIN TRY      IF NOT EXISTS (SELECT * FROM dbo.juvenile 	WHERE birth_date < DATEADD(Year, -18, getdate()))      BEGIN           SET @output_msg = 'ChangeJuvenile_SP - No over 18 year-old juveniles to move!‘           SELECT @output_msg [Status Message]           ROLLBACK TRANSACTION           RETURN -3      END END TRY BEGIN CATCH -- Had a problem with EXISTS????     SET @output_msg = CAST('ChangeJuvenile_SP - ERROR:  ' AS char(28)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' selecting (EXISTS) juveniles into jv_table.' AS char(44)) + 	CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      SET @Member_no = -1      PRINT @Member_no      RETURN @Member_no END CATCH -- Move over 18 year-old Juveniles to Adult table BEGIN TRY      SET @j_expr_date = DATEADD(Year, 1, getdate())      INSERT INTO dbo.adult (member_no, street, city, state, zip, phone_no, expr_date)      SELECT j.member_no, a.street, a.city, a.state, a.zip, a.phone_no, 	@j_expr_date 	FROM dbo.juvenile j 	JOIN dbo.adult a 	ON j.adult_member_no = a.member_no 	WHERE j.birth_date < DATEADD(Year, -18, getdate())      SET @row_count = @@ROWCOUNT      SET @output_msg = CAST('ChangeJuvenile_SP - ' AS char(20)) + 	CAST(@row_count AS varchar(8)) + 	CAST(' juveniles moved to adult table.' AS char(32))      SELECT @output_msg [Juveniles moved] END TRY BEGIN CATCH
Change Juvenile To Adult (Cont.) -- Move didn't work!      SET @output_msg = CAST('ChangeJuvenile_SP - ERROR:  ' AS char(28)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' selecting juveniles into jv_table.' AS char(35)) + 	CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage 	ROLLBACK TRANSACTION 	SET @Member_no = -1 	PRINT @Member_no 	RETURN @Member_no END CATCH -- Report Juveniles who got moved! SELECT j.member_no [Member #], a.street [Street], a.city [City], a.state [State], a.zip [Zip Code], a.phone_no [Phone #], 	@j_expr_date [Expires], 'Moved to adult' [-- Moved --]           FROM dbo.juvenile j           JOIN dbo.adult a 	ON j.adult_member_no = a.member_no           WHERE j.birth_date < DATEADD(Year, -18, getdate()) -- Now, delete them from the juvenile table BEGIN TRY      DELETE FROM dbo.juvenile 	WHERE birth_date < DATEADD(Year, -18, getdate())      SELECT 'ChangeJuvenile_SP - Over 18 year-old juvenile(s) deleted!' [-- Deleted --] END TRY BEGIN CATCH -- That didn't work!      SET @output_msg = CAST('ChangeJuvenile_SP - ERROR:  ' AS char(29)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE:  ' AS char(8)) + 	CAST(ERROR_LINE() AS varchar(10)) + 	CAST(' deleting juvenile row(s)' AS char(25)) + 	CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      SET @Member_no = -2      PRINT @Member_no      RETURN @Member_no END CATCH -- Success!!!!! COMMIT TRANSACTION RETURN 0 ; go
Update Adult /* Update adult stored procedure (dbo.UpdateAdult_SP) This procedure allows the librarian to input changes to be made to the adult's information. INPUT (and format):	                            Position #           Member number		1 NOTE:  Except for member number, all other fields are OPTIONAL           --BUT-- it's pointless to call this proc if you're not           going to intput some change!           Member name Last name		2 First name		3 Middle Initial		4 Street5 City6 State7 Zip Code		8 	Phone Number		9 RETURN VALUES 	-1          Member does not exist 	-2           Update requested without submitting any updated information! 	-3          Error updating adult 	-4          Error updating member 	 Member Number if successful */ CREATE PROC dbo.UpdateAdult_SP           @Member_no int, @Last_Name varchar(15) = NULL,           @First_Namevarchar(15) = NULL, @Middle_Initial char(1) = NULL,           @Street varchar(15) = NULL, @City varchar(15) = NULL,           @State char(2) = NULL, @Zip char(10) = NULL, @Phone_no char(10) = NULL,           @Member_no_outint OUTPUT AS BEGIN TRANSACTION -- Variables for use throughout this proc DECLARE @output_msgvarchar(150) SET @Member_no_out = @Member_no -- Does the member number actually exist? IF NOT EXISTS (SELECT member_no FROM dbo.adult 	WHERE member_no = @Member_no) BEGIN      SET @output_msg = CAST('UpdateAdult_SP - ERROR:  ' AS char(25)) + 	CAST('Member number ' AS char(14)) + 	CAST(@Member_no AS varchar(8)) + 	CAST(' does not exist!' AS char(16))      SET @Member_no_out = -1      SELECT @output_msg [Error Message]      ROLLBACK TRANSACTION      RETURN @Member_no_out END -- Did you give me any information to update? IF @Last_Name IS NULL AND @First_Name IS NULL AND @Middle_Initial IS NULL  	AND 	@Street IS NULL AND @City IS NULL AND @State IS NULL AND 	@Zip IS NULL AND @Phone_no IS NULL BEGIN     SET @output_msg = CAST('UpdateAdult_SP - ERROR:  ' AS char(25)) + 	CAST('You did not give me any data to change for member number ' AS char(57)) + 	CAST(@Member_no AS varchar(8)) + CAST('!' AS char(1))      SELECT @output_msg [Error Message]      SET @Member_no_out = -2      ROLLBACK TRANSACTION      RETURN @Member_no_out END
Update Adult (Cont.) -- Figure out what information was provided and change it in adult BEGIN TRY      IF @Street IS NOT NULL 	UPDATE dbo.adult     	          SET street = @Street 	          WHERE member_no = @Member_no      IF @City IS NOT NULL 	UPDATE dbo.adult 	          SET city = @City 	          WHERE member_no = @Member_no      IF @State IS NOT NULL 	UPDATE dbo.adult 	          SET state = @State 	          WHERE member_no = @Member_no      IF @Zip IS NOT NULL 	UPDATE dbo.adult 	          SET zip = @Zip 	          WHERE member_no = @Member_no      IF @Phone_no IS NOT NULL 	UPDATE dbo.adult 	          SET phone_no = @Phone_no 	          WHERE member_no = @Member_no END TRY BEGIN CATCH -- Error updating adult table!      SET @output_msg = CAST('UpdateAdult_SP - ERROR:  ' AS char(25)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE:  ' AS char(8)) + 	CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' deleting juvenile row(s)' AS char(25)) + 	CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      SET @Member_no_out = -3      PRINT @Member_no_out      RETURN @Member_no_out END CATCH -- Okay, now for the member table! BEGIN TRY      IF @Last_Name IS NOT NULL 	UPDATE dbo.member 	          SET lastname = @Last_Name 	          WHERE member_no = @Member_no      IF @First_Name IS NOT NULL 	UPDATE dbo.member 	          SET firstname = @First_Name 	          WHERE member_no = @Member_no      IF @Middle_Initial IS NOT NULL 	UPDATE dbo.member 	          SET middleinitial = @Middle_Initial 	          WHERE member_no = @Member_no END TRY BEGIN CATCH -- Problem upading member table!     SET @output_msg = CAST('UpdateAdult_SP - ERROR:  ' AS char(25)) + 	CAST(ERROR_NUMBER() AS varchar(5)) + 	CAST(' LINE:  ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + 	CAST(' updating Adult' AS char(25)) + 	CAST(' ' AS char(1)) + ERROR_MESSAGE()      SELECT @output_msgErrorMessage      ROLLBACK TRANSACTION      SET @Member_no_out = -4      PRINT @Member_no_out      RETURN @Member_no_out END CATCH -- Success!  Let them know it! SET @output_msg = CAST('UpdateAdult_SP - Member number ' AS char(31)) +          CAST(@Member_no AS varchar(8)) +           CAST(' successfully updated!' AS char(22)) COMMIT TRANSACTION SELECT @output_msg PRINT @Member_no_out RETURN @Member_no_out ; go
MORE TO COME!!!

More Related Content

Similar to Tim Kunze\'s SQL Server and VB.NET portfolio

Chris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql PortfolioChris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql Portfolioclmcglothen
 
James Colby Maddox Business Intellignece and Computer Science Portfolio
James Colby Maddox Business Intellignece and Computer Science PortfolioJames Colby Maddox Business Intellignece and Computer Science Portfolio
James Colby Maddox Business Intellignece and Computer Science Portfoliocolbydaman
 
Form Processing In Php
Form Processing In PhpForm Processing In Php
Form Processing In PhpHarit Kothari
 
Plsql task answers
Plsql task answersPlsql task answers
Plsql task answersNawaz Sk
 
Serverless Functions and Vue.js
Serverless Functions and Vue.jsServerless Functions and Vue.js
Serverless Functions and Vue.jsSarah Drasner
 
I got the codes written down below- Basically- I am trying to implemen.pdf
I got the codes written down below- Basically- I am trying to implemen.pdfI got the codes written down below- Basically- I am trying to implemen.pdf
I got the codes written down below- Basically- I am trying to implemen.pdfshreeaadithyaacellso
 
Php Basic Security
Php Basic SecurityPhp Basic Security
Php Basic Securitymussawir20
 
Don't Repeat Yourself, and Automated Code Reviews
Don't Repeat Yourself, and Automated Code ReviewsDon't Repeat Yourself, and Automated Code Reviews
Don't Repeat Yourself, and Automated Code ReviewsGramener
 
06 Php Mysql Connect Query
06 Php Mysql Connect Query06 Php Mysql Connect Query
06 Php Mysql Connect QueryGeshan Manandhar
 
Sql Portfolio(March 31)
Sql Portfolio(March 31)Sql Portfolio(March 31)
Sql Portfolio(March 31)iceolated
 
Business Intelligence Portfolio
Business Intelligence PortfolioBusiness Intelligence Portfolio
Business Intelligence PortfolioDrewAllen
 
Library Project Stored Procs
Library Project Stored ProcsLibrary Project Stored Procs
Library Project Stored Procsnwbgh
 
PHP Form Validation Technique
PHP Form Validation TechniquePHP Form Validation Technique
PHP Form Validation TechniqueMorshedul Arefin
 
Oracle - Program with PL/SQL - Lession 09
Oracle - Program with PL/SQL - Lession 09Oracle - Program with PL/SQL - Lession 09
Oracle - Program with PL/SQL - Lession 09Thuan Nguyen
 
May Woo Bi Portfolio
May Woo Bi PortfolioMay Woo Bi Portfolio
May Woo Bi Portfoliomaywoo
 

Similar to Tim Kunze\'s SQL Server and VB.NET portfolio (20)

My Portfolio
My PortfolioMy Portfolio
My Portfolio
 
Chris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql PortfolioChris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql Portfolio
 
James Colby Maddox Business Intellignece and Computer Science Portfolio
James Colby Maddox Business Intellignece and Computer Science PortfolioJames Colby Maddox Business Intellignece and Computer Science Portfolio
James Colby Maddox Business Intellignece and Computer Science Portfolio
 
Form Processing In Php
Form Processing In PhpForm Processing In Php
Form Processing In Php
 
Plsql task answers
Plsql task answersPlsql task answers
Plsql task answers
 
Serverless Functions and Vue.js
Serverless Functions and Vue.jsServerless Functions and Vue.js
Serverless Functions and Vue.js
 
I got the codes written down below- Basically- I am trying to implemen.pdf
I got the codes written down below- Basically- I am trying to implemen.pdfI got the codes written down below- Basically- I am trying to implemen.pdf
I got the codes written down below- Basically- I am trying to implemen.pdf
 
Php Basic Security
Php Basic SecurityPhp Basic Security
Php Basic Security
 
Don't Repeat Yourself, and Automated Code Reviews
Don't Repeat Yourself, and Automated Code ReviewsDon't Repeat Yourself, and Automated Code Reviews
Don't Repeat Yourself, and Automated Code Reviews
 
06 Php Mysql Connect Query
06 Php Mysql Connect Query06 Php Mysql Connect Query
06 Php Mysql Connect Query
 
Sql Portfolio(March 31)
Sql Portfolio(March 31)Sql Portfolio(March 31)
Sql Portfolio(March 31)
 
Business Intelligence Portfolio
Business Intelligence PortfolioBusiness Intelligence Portfolio
Business Intelligence Portfolio
 
Library Project Stored Procs
Library Project Stored ProcsLibrary Project Stored Procs
Library Project Stored Procs
 
PHP Form Validation Technique
PHP Form Validation TechniquePHP Form Validation Technique
PHP Form Validation Technique
 
SQL -PHP Tutorial
SQL -PHP TutorialSQL -PHP Tutorial
SQL -PHP Tutorial
 
Oracle - Program with PL/SQL - Lession 09
Oracle - Program with PL/SQL - Lession 09Oracle - Program with PL/SQL - Lession 09
Oracle - Program with PL/SQL - Lession 09
 
May Woo Bi Portfolio
May Woo Bi PortfolioMay Woo Bi Portfolio
May Woo Bi Portfolio
 
Marcus Matthews
Marcus MatthewsMarcus Matthews
Marcus Matthews
 
OHarmony - How the Optimiser works
OHarmony - How the Optimiser worksOHarmony - How the Optimiser works
OHarmony - How the Optimiser works
 
Xenogenetics
XenogeneticsXenogenetics
Xenogenetics
 

Tim Kunze\'s SQL Server and VB.NET portfolio

  • 1. Tim Kunze SQL Developer/DBA Portfolio
  • 2. Teaser Rate Offer Calculator I got one of those teaser offers from Bank of America so I thought, “wouldn’t it be nice to have an application that would tell you whether using the offer to pay off another credit card would be worthwhile?” Rather than go search the internet to find one, I decided it would be more fun to write it myself. So, here it is: So, here’s how it works: You enter the line of credit available on the offer, the fee for the advance and the teaser interest rate in the “Available Calculations”. Then, you enter the payoff amount, interest rate and the number of months the offer runs (ie. Payoff in May and offer runs through December = 8 months). Once you have all this data entered in the boxes, click the “Calc Savings” button (or press Ctrl + s). If the payoff is greater than the line of credit, the line of credit is used in the calculations. If the payoff is less than the line of credit, the payoff is used.
  • 3. Library Project Utilizes the Microsoft Library Database Created stored procedures for the following functions: Add an adult member Add a juvenile member Check in a book Check out a book Add a book to the database Renew Membership Change a juvenile member to adult Update an adult member’s information
  • 4. Add Adult /* AddAdult Stored Procedure (dbo.AddAdult_SP) This procedure is executed when a new adult member is added to the Library database.   INPUT (and format): Position # Name member.lastnamevarchr(15) 1 member.firstnamevarchar(15) 2 member.middleinitialchar(1) 7 OPTIONAL (NULL) Mailing Address adult.streetvarchar(15) 3 adult.cityvarchar(15) 4 adult.statechar(2) 5 adult.zip char(10) 6 Phone Number phone_nochar(13) 8 OPTIONAL (NULL)   RETURN VALUES: -1 Error on insertion of member row -2 Error on insertion of adult row New Member Number if successful */ CREATE PROC dbo.AddAdult_SP @lastnamevarchar(15), @firstnamevarchar(15), @street varchar(15), @city varchar(15), @state char(2), @zip char(10), @middleinitial char(1) = NULL, @phone_no char(13) = NULL, @NewMember_nosmallint OUTPUT AS BEGIN TRANSACTION -- variable for returning error/success messages (troubleshooting) DECLARE @output_msgvarchar(150) -- Insert the new member row BEGIN TRY INSERT INTO dbo.member (lastname, firstname, middleinitial) VALUES (@lastname, @firstname, @middleinitial) SET @NewMember_no = @@IDENTITY END TRY BEGIN CATCH -- ERROR! SET @output_msg = CAST('AddAdult_SP - ERROR: ' AS char(23)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SET @NewMember_no = -1 SELECT @NewMember_noNewMember#, @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @NewMember_no END CATCH BEGIN TRY -- Insert the new adult row. INSERT INTO dbo.adult (member_no, street, city, state, zip, phone_no, expr_date) VALUES (@NewMember_no, @street, @city, @state, @zip, @phone_no, DATEADD (Year, 1, getdate())) END TRY BEGIN CATCH -- ERROR! SET @output_msg = CAST('AddAdult_SP - ERROR: ' AS char(23)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @NewMember_noNewMember#, @output_msgErrorMessage SET @NewMember_no = -2 ROLLBACK TRANSACTION RETURN @NewMember_no END CATCH -- Send success message! SET @output_msg = CAST('AddAdult_SP - New member # ' AS char(27)) + CAST(@NewMember_no AS char(8)) + CAST (' successfully entered!' AS char(22)) SELECT @output_msg [Success Message] COMMIT TRANSACTION RETURN @NewMember_no ; go
  • 5. Testing: BAD DATA! INPUT: -- NO DATA! DECLARE @ret int EXEC @ret = dbo.AddAdult_SP SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure AddAdult_SP, Line 0 Procedure or function 'AddAdult_SP' expects parameter '@lastname', which was not supplied. INPUT: -- BAD DATA (missing parameter) DECLARE @ret int EXEC @ret = dbo.AddAdult_SP Jones, Fred, [Main Place], Enid, OK SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure AddAdult_SP, Line 0 Procedure or function 'AddAdult_SP' expects parameter '@zip', which was not supplied. GOOD DATA! INPUT: DECLARE @ret int EXEC @ret = dbo.AddAdult_SP Kunze, Arnold, [E 3rd Place], Tulsa, OK, 74112, DEFAULT, DEFAULT, @ret SELECT @ret [Returned Value] SELECT firstname, lastname, street, city, state, zip, phone_no FROM dbo.adult a JOIN dbo.member m ON m.member_no = a.member_no WHERE lastname = 'Kunze' AND firstname = 'Arnold' Go RESULTS: Success Message AddAdult_SP - New member # 10001 successfully entered! Returned Value 10001 Firstnamelastname street city state zipphone_no Arnold Kunze E 3rd Place Tulsa OK 74112 NULL
  • 6. Add Juvenile ---------------------------------------------------------------------------------------- /* Add Juvenile Stored Procedure (dbo.AddJuvenile_SP) This procedure is executed when a new Juvenile member is added to the Library Database.   INPUT (and format): Position # Adult Memberr# 1 MUST EXIST NAME member.lastnamevarchar(15) 2 member.firstnamevarchar(15) 3 member.middleinitial char(1) 5 OPTIONAL (NULL) Birth Date juvenile.birth_date(datetime) 4 Check for < 18   RETURN VALUES -1 Error on juvenile's age -2 Adult sponsor doesn't have a record in the database (erroneous adult member #) -3 Error on insertion of member row -4 Error on insertion of juvenile row -5 Adult Member's card has expired New Member Number if successful */   CREATE PROC dbo.AddJuvenile_SP @Adult_Member_nosmallint, @lastnamevarchar(15), @firstnamevarchar(15), @birth_datedatetime, @middleinitial char(1) = NULL, @NewMember_nosmallint OUTPUT AS BEGIN TRANSACTION -- variable for returning error/success messages (troubleshooting) DECLARE @output_msgvarchar(150), @expr_datedatetime -- Verify juvenile's age! IF DATEADD (Year, 18, @birth_date) <= getdate() BEGIN SET @output_msg = 'AddJuvenile_SP- ERROR: New member is older than 18 - must be input as adult.' SELECT @output_msgErrorMessage SET @NewMember_no = -1 ROLLBACK TRANSACTION RETURN @NewMember_no END IF @birth_date > getdate() BEGIN SET @output_msg = 'AddJuvenile_SP - ERROR: New member has not been born yet!' SELECT @output_msgErrorMessage SET @NewMember_no = -1 ROLLBACK TRANSACTION RETURN @NewMember_no END -- Check to see if adult member exists! IF NOT EXISTS (SELECT member_no FROM dbo.adult WHERE dbo.adult.member_no = @Adult_Member_no) BEGIN SET @output_msg = 'AddJuvenile_SP - ERROR: Adult sponsor for this juvenile does not exist!' SELECT @output_msgErrorMessage SET @NewMember_no = -2 ROLLBACK TRANSACTION RETURN @NewMember_no END -- Verify adult's card is current! IF (SELECT expr_date FROM dbo.adult WHERE adult.member_no = @Adult_Member_no) < getdate() BEGIN SET @output_msg = 'AddJuvenile_SP - ERROR: Adult member card has expired!' SELECT @output_msgErrorMessage SET @NewMember_no = -5 ROLLBACK TRANSACTION RETURN @NewMember_no END -- Insert the new member row BEGIN TRY INSERT INTO dbo.member (lastname, firstname, middleinitial) VALUES (@lastname, @firstname, @middleinitial) SET @NewMember_no = @@IDENTITY END TRY
  • 7. Add Juvenile (Cont.) BEGIN CATCH -- ERROR! SET @output_msg = CAST('AddJuvenile_SP - ERROR: ' AS char(25)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @NewMember_noNewMember#, @output_msgErrorMessage SET @NewMember_no = -3 ROLLBACK TRANSACTION RETURN @NewMember_no END CATCH BEGIN TRY -- Insert the new juvenile row. INSERT INTO dbo.juvenile (member_no, adult_member_no, birth_date) VALUES (@NewMember_no, @Adult_Member_no, @birth_date) END TRY BEGIN CATCH -- ERROR! SET @output_msg = CAST('AddJuvenile_SP - ERROR: ' AS char(25)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @NewMember_noNewMember#, @output_msgErrorMessage SET @NewMember_no = -4 ROLLBACK TRANSACTION RETURN @NewMember_no END CATCH -- Send success message! SET @output_msg = CAST('AddJuvenile_SP - Member # ' AS char(26)) + CAST(@NewMember_no AS char(8)) + CAST(' successfully entered!' AS char(22)) SELECT @output_msg [Success Message] COMMIT TRANSACTION RETURN @NewMember_no ; go
  • 8. Testing: BAD DATA! INPUT: -- NO DATA! DECLARE @ret int EXEC @ret = dbo.AddJuvenile_SP SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure AddJuvenile_SP, Line 0 Procedure or function 'AddJuvenile_SP' expects parameter '@Adult_Member_no', which was not supplied. INPUT: -- BAD DATA (missing parameter - birth date) DECLARE @ret int EXEC @ret = dbo.AddJuvenile_SP 16102, Jones, Fred SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure AddJuvenile_SP, Line 0 Procedure or function 'AddJuvenile_SP' expects parameter '@birth_date', which was not supplied. INPUT: -- BAD DATA (Adult member not in DB) DECLARE @ret int EXEC @ret = dbo.AddJuvenile_SP 20000, Jones, Fred, [1/1/2000], DEFAULT, @ret SELECT @ret [Return Value] RESULTS: ErrorMessage AddJuvenile_SP - ERROR: Adult sponsor for this juvenile does not exist! Return Value -2 GOOD DATA! INPUT: DECLARE @ret int, @Member_nosmallint SET @Member_no = (SELECT TOP(1) a.member_no FROM dbo.adult a JOIN dbo.member m ON m.member_no = a.member_no WHERE m.lastname = 'Kunze' AND m.firstname = 'Arnold') EXEC @ret = dbo.AddJuvenile_SP @Member_no, Kunze, Dane, [1/28/1999], DEFAULT, @ret SELECT @ret [Returned Value] SELECT firstname, lastname, j.member_no, birth_date FROM dbo.member m JOIN dbo.juvenile j ON j.member_no = m.member_no WHERE firstname = 'Dane' AND lastname = 'Kunze' RESULTS: Success Message AddJuvenile_SP - Member # 10002 successfully entered! Returned Value 10002 firstnamelastnamemember_nobirth_date Dane Kunze 10002 1999-01-28 00:00:00.000
  • 9. Check In A Book ------------------------------------------------------------------------- /*Book Check In Stored Procedure (dbo.BookCheckIn_SP) This procedure is executed when a book is being checked in. INPUT (and format): Position # Member_no 1MUST EXIST Checking In Books ISBN 2 COPY 3 RETURN VALUES -1 Invalid member number -2 Member owes fines -3 Member's card has expired -4 Book & Copy combination not in DB -5 Book was not on loan -6 Error inserting into Loan History -7 Error updating copy -8 Error deleting loan 0 if successful */ CREATE PROC dbo.BookCheckIn_SP @member_nosmallint, @ISBN int, @copy smallint, @output smallint AS BEGIN TRANSACTION -- variable for returning error/success messages (troubleshooting) DECLARE @output_msgvarchar(150) --variable for checking if member owes fines & Count of books checked out DECLARE @Fine_Valuesmallmoney, @BooksCheckedOutint, @title varchar(63), @title_noint, @on_loan char(1), @out_datedatetime, @due_datedatetime, @in_datedatetime -- Verify member number IF NOT EXISTS (SELECT member_no FROM dbo.member WHERE member.member_no = @member_no) BEGIN SET @output = -1 SET @output_msg = CAST('BookCheckIn_SP - ERROR: ' AS char(25)) + CAST('Member number ' AS char(14)) + CAST(@member_no AS varchar(8)) + CAST(' does not exist!' AS char(16)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Check for outstanding fines SET @Fine_Value = (SELECT SUM(ISNULL(fine_assessed, 0)) - (SUM(ISNULL(fine_paid, 0)) + SUM(ISNULL(fine_waived, 0))) FROM dbo.loanhist WHERE member_no = @member_no) IF @Fine_Value > 0 BEGIN SET @output = -2 SET @output_msg = CAST('BookCheckIn_SP - ERROR: ' AS char(25)) + CAST('Member owes fines in total of $' AS char(31)) + CAST(@Fine_Value AS varchar(8)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Verify adult's card is current! IF (SELECT expr_date FROM dbo.adult WHERE adult.member_no = @Member_no) < getdate() BEGIN SET @output_msg = 'BookCheckIn_SP - ERROR: Member card has expired!' SELECT @output_msgErrorMessage SET @output = -3 ROLLBACK TRANSACTION RETURN @output END
  • 10. Check In A Book (Cont.) -- Verify if this member number actually has this book checked out! IF NOT EXISTS(SELECT * FROM dbo.loan WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no) BEGIN SET @output_msg = CAST('BookCheckIn_SP - ERROR: Member ' AS char(32)) + CAST(@Member_no AS varchar(8)) + CAST(' does not have ISBN 'AS char(20)) + CAST(@ISBN AS varchar(8)) + CAST(', copy # ' AS char(9)) + CAST(@Copy AS varchar(8)) + CAST(' checked out!' AS char(13)) SET @output = -5 SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Check to see if ISBN/COPY exist in DB IF NOT EXISTS (SELECT isbn, copy_no FROM dbo.copy WHERE isbn = @ISBN AND copy_no = @Copy) BEGIN SET @output = -4 SET @output_msg = 'BookCheckIn_SP - ERROR: ISBN and Copy do not exist in database!' SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Verify that book really was on loan SET @on_loan = (SELECT on_loan FROM dbo.copy WHERE isbn = @ISBN AND copy_no = @Copy) IF @on_loan IN ('n', 'N') BEGIN SET @output = -5 SET @title = (SELECT TOP(1) title FROM dbo.copy JOIN dbo.title ON title.title_no = copy.title_no WHERE copy.isbn = @ISBN AND copy.copy_no = @Copy) SET @output_msg = CAST('BookCheckIn_SP - ERROR: ' AS char(25)) + CAST(@ISBN AS varchar(10)) + CAST(', COPY: ' AS char(9)) + CAST(@COPY AS varchar(3)) + CAST(' - "' AS char(4)) + @title + CAST('" was NOT checked out!' AS char(22)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Passed all the tests, check it in! IF (SELECT out_date FROM loan WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no) IS NOT NULL SET @out_date = (SELECT out_date FROM loan WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no) ELSE SET @out_date = DATEADD(DAY, 14, (SELECT due_date FROM loan WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no)) SET @due_date = (SELECT due_date FROM loan WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no) SET @title_no = (SELECT title_no FROM loan WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no) SET @in_date = getdate() -- INSERT row into dbo.loanhist BEGIN TRY INSERT INTO dbo.loanhist (isbn, copy_no, out_date, title_no, member_no, due_date, in_date) VALUES (@ISBN, @Copy, @out_date, @title_no, @Member_no, @due_date, @in_date) -- NOTE: Specs didn't say anything about levying fines! END TRY BEGIN CATCH -- INSERT failed! SET @output = -6 SET @output_msg = CAST('BookCheckIn_SP - ERROR: ' AS char(25)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' inserting loanhist ISBN: ' AS char(26)) + CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END CATCH
  • 11. Check In A Book (Cont.) -- UPDATE the on_loan column of the dbo.copy row! BEGIN TRY UPDATE dbo.copy SET on_loan = 'N' WHERE isbn = @ISBN AND copy_no = @Copy END TRY BEGIN CATCH -- UPDATE failed! SET @output = -7 SET @output_msg = CAST('BookCheckIn_SP - ERROR: ' AS char(25)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' updating copy ISBN: ' AS char(22)) + CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END CATCH -- DELETE row from dbo.loan BEGIN TRY DELETE dbo.loan WHERE isbn = @ISBN AND copy_no = @Copy AND member_no = @Member_no END TRY BEGIN CATCH -- DELETE failed! SET @output = -8 SET @output_msg = CAST('BookCheckIn_SP - ERROR: ' AS char(25)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' deleting loan ISBN: ' AS char(22)) + CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END CATCH -- Book successfully checked in! SET @output = 0 SET @output_msg = 'BookCheckIn_SP - Book successfully checked in! Have a great day!' SELECT @output_msg [Success Message] COMMIT TRANSACTION RETURN @output ; go
  • 12. Testing: BAD DATA! INPUT: -- No Data! DECLARE @ret int EXEC @ret = dbo.BookCheckIn_SP SELECT @ret [Return Value] RESULTS: Msg 201, Level 16, State 4, Procedure BookCheckIn_SP, Line 0 Procedure or function 'BookCheckIn_SP' expects parameter '@member_no', which was not supplied. INPUT: -- Member not in DB DECLARE @ret int EXEC @ret = dbo.BookCheckIn_SP 9999, 2, 1, @ret SELECT @ret [Return Value] RESULTS: ErrorMessage BookCheckIn_SP - ERROR: Member 9999 does not have ISBN 2, copy # 1 checked out! Return Value -5 INPUT: -- Book not checked out! DECLARE @ret int EXEC @ret = dbo.BookCheckIn_SP 4, 2, 3, @ret SELECT @ret [Return Value] RESULTS: ErrorMessage BookCheckIn_SP - ERROR: Member 4 does not have ISBN 2, copy # 3 checked out! Return Value -5 GOOD DATA! INPUT:
  • 13. Check Out A Book -------------------------------------------------------------------------------- /*Book Check Out Stored Procedure (dbo.BookCheckOut_SP) This procedure is executed when a book is being checked out. INPUT (and format): Position # member.member_no 1 MUST EXIST Checked Out Books ISBN 2 COPY 3 RETURN VALUES -1 Invalid member number -2 Member owes fines -4 Book already checked out/not loanable -5 Book & Copy combination not in DB -6 Too many books -7 Error inserting into Loan -8 Member's card has expired -9 Book is not loanable 0 if successful */ CREATE PROC dbo.BookCheckOut_SP @member_nosmallint, @ISBN int, @copy smallint, @output smallint AS BEGIN TRANSACTION -- variable for returning error/success messages (troubleshooting) DECLARE @output_msgvarchar(150) --variable for checking if member owes fines & Count of books checked out DECLARE @Fine_Valuesmallmoney, @BooksCheckedOutint, @title varchar(63), @title_noint, @on_loan char(1), @out_datedatetime, @in_datedatetime, @due_datedatetime --, @Book_Table TABLE (@BT_ISBN int, @BT_Copysmallint) --table to put input ISBN/copy#s into -- Verify member number IF NOT EXISTS (SELECT member_no FROM dbo.member WHERE member.member_no = @member_no) BEGIN SET @output = -1 SET @output_msg = CAST('BookCheckOut_SP - ERROR: ' AS char(26)) + CAST('Member number ' AS char(14)) + CAST(@member_no AS varchar(8)) + CAST(' does not exist!' AS char(16)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Check for outstanding fines SET @Fine_Value = (SELECT SUM(ISNULL(fine_assessed, 0)) - (SUM(ISNULL(fine_paid, 0)) + SUM(ISNULL(fine_waived, 0))) FROM dbo.loanhist WHERE member_no = @member_no) IF @Fine_Value > 0 BEGIN SET @output = -2 SET @output_msg = CAST('BookCheckOut_SP - ERROR: ' AS char(26)) + CAST('Member owes fines in total of $' AS char(31)) + CAST(@Fine_Value AS varchar(8)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Check for book already checked out SET @on_loan = (SELECT on_loan FROM dbo.copy WHERE isbn = @ISBN AND copy_no = @Copy) IF @on_loan IN ('y', 'Y') BEGIN SET @output = -4 SET @title = (SELECT TOP(1) title FROM dbo.copy JOIN dbo.title ON title.title_no = copy.title_no WHERE copy.isbn = @ISBN AND copy.copy_no = @Copy) SET @output_msg = CAST('BookCheckOut_SP - ERROR: ' AS char(26)) + CAST(@ISBN AS varchar(10)) + CAST(', COPY: ' AS char(9)) + CAST(@COPY AS varchar(3)) + CAST(' - "' AS char(4)) + @title + CAST ('" is already checked out!' AS char(25)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END
  • 14. Check Out A Book (Cont.) -- Verify that book is loanable SET @on_loan = (SELECT loanable FROM dbo.itemi WHERE i.isbn = @ISBN) IF @on_loan NOT IN ('y', 'Y') BEGIN SET @output = -4 SET @title = (SELECT TOP(1) title FROM dbo.copy JOIN dbo.title ON title.title_no = copy.title_no WHERE copy.isbn = @ISBN AND copy.copy_no = @Copy) SET @output_msg = CAST('BookCheckOut_SP - ERROR: ' AS char(26)) + CAST(@ISBN AS varchar(10)) + CAST(', COPY: ' AS char(9)) + CAST(@COPY AS varchar(3)) + CAST(' - "' AS char(4)) + @title + CAST ('" is not loanable!' AS char(18)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Check to see if ISBN/COPY exist in DB IF NOT EXISTS (SELECT isbn, copy_no FROM dbo.copy WHERE isbn = @ISBN AND copy_no = @Copy) BEGIN SET @output = -5 SET @output_msg = 'BookCheckOut_SP - ERROR: ISBN and Copy do not exist in database!‘ SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Check to see how many books member has checked out (can't have more than 4) SET @BooksCheckedOut = (SELECT COUNT(member_no) FROM dbo.loan WHERE loan.member_no = @member_no) IF @BooksCheckedOut > 3 BEGIN SET @output = -6 SET @output_msg = 'BookCheckOut_SP - ERROR: Member already has four books checked out!‘ SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END -- Verify adult's card is current! IF (SELECT expr_date FROM dbo.adult WHERE adult.member_no = @Member_no) < getdate() BEGIN SET @output_msg = 'BookCheckOut_SP - ERROR: Adult member card has expired!‘ SELECT @output_msgErrorMessage SET @output = -8 ROLLBACK TRANSACTION RETURN @output END -- Verify that book is loanable IF (SELECT loanable FROM item WHERE isbn = @ISBN) IN ('n', 'N') BEGIN SET @output_msg = 'BookCheckOut_SP - ERROR: Book is not loanable!‘ SELECT @output_msgErrorMessage SET @output = -9 ROLLBACK TRANSACTION RETURN @output END -- Everything checks out so let's check this member out! BEGIN TRY SET @title_no = (SELECT title_no FROM dbo.copy WHERE isbn = @ISBN AND copy_no = @Copy) UPDATE dbo.copy SET on_loan = 'Y‘ WHERE isbn = @ISBN AND copy_no = @Copy END TRY BEGIN CATCH SET @output = -8 SET @output_msg = CAST('BookCheckOut_SP - ERROR: ' AS char(26)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' updating copy for ISBN: ' AS char(25)) + CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END CATCH BEGIN TRY SET @out_date = getdate() SET @due_date = (DATEADD(day, 14, getdate())) INSERT INTO dbo.loan VALUES (@ISBN, @Copy, @title_no, @Member_no, @out_date, @due_date) END TRY BEGIN CATCH SET @output = -8 SET @output_msg = CAST('BookCheckOut_SP - ERROR: ' AS char(26)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' inserting loan for ISBN: ' AS char(27)) + CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END CATCH SET @output = 0 SET @output_msg = 'BookCheckOut_SP - Book successfully checked out! Have a great day!' SELECT @output_msg [Success Message] COMMIT RETURN @output ; go
  • 15. Add A Book ------------------------------------------------------------------------------- /*Add a Book (dbo.AddBook_SP) This procedure is executed when a book is being added. INPUT (and format): Position # New Book ISBN 1 Title 2 OPTIONAL (If ISBN exists) Author 3 OPTIONAL (If ISBN exists) Translation 4 OPTIONAL (If ISBN exists) Cover 5 OPTIONAL (If ISBN exists) Synopsis 6 OPTIONAL RETURN VALUES -1 Error updating copy -2 Missing Title -3 Missing Author -4 Missing Translation -5 Missing Cover -6 Error inserting into Title -7 Error inserting into Item -8 Error inserting into Copy ISBN if successful */ CREATE PROC dbo.AddBook_SP @ISBN int, @Title varchar(63) = NULL, @Author varchar(31) = NULL, @Translation char(8) = NULL, @Cover char(8) = NULL, @Synopsis text = NULL, @ISBN_outint OUTPUT AS BEGIN TRANSACTION -- Variables for use throughout this proc DECLARE @output_msgvarchar(150), @next_copy_nosmallint, @title_noint, @output int -- Does the ISBN already exist? IF EXISTS (SELECT isbn FROM dbo.item WHERE isbn = @ISBN) BEGIN BEGIN TRY SET @next_copy_no = (SELECT MAX(copy_no) FROM dbo.copy WHERE isbn = @ISBN) + 1 SET @title_no = (SELECT TOP(1) title_no FROM dbo.copy WHERE isbn = @ISBN) INSERT INTO dbo.copy VALUES (@ISBN, @next_copy_no, @title_no, 'N') END TRY BEGIN CATCH SET @output = -1 SET @output_msg = CAST('AddBook_SP - ERROR: ' AS char(21)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' ' AS char(1)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' updating copy for ISBN: ' AS char(26)) + CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END CATCH SET @output_msg = CAST('AddBook_SP - ISBN ' AS char(18)) + CAST(@ISBN AS varchar(8)) + CAST(' copy # ' AS char(8)) + CAST(@next_copy_no AS varchar(8)) + CAST(' successfully added!' AS char(20)) SELECT @output_msgErrorMessage COMMIT TRANSACTION RETURN @ISBN END -- Book doesn't already exist so must insert it into item, copy and title! -- First, verify that all the needed parameters were passed! -- GOT TITLE? IF @Title IS NULL BEGIN SET @output_msg = CAST('AddBook_SP - ERROR: Missing Title for new ISBN ' AS char(48)) + CAST(@ISBN AS varchar(8)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN -2 END
  • 16. Add A Book (Cont.) -- GOT AUTHOR? IF @Author IS NULL BEGIN SET @output_msg = CAST('AddBook_SP - ERROR: Missing Author for new ISBN ' AS char(49)) + CAST(@ISBN AS varchar(8)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN -3 END -- GOT TRANSLATION? IF @Translation IS NULL BEGIN SET @output_msg = CAST('AddBook_SP - ERROR: Missing Translation for new ISBN ' AS char(54)) + CAST(@ISBN AS varchar(8)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN -4 END -- GOT COVER? IF @Cover IS NULL BEGIN SET @output_msg = CAST('AddBook_SP - ERROR: Missing Cover for new ISBN ' AS char(48)) + CAST(@ISBN AS varchar(8)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN -5 END -- First must insert into title to get title_no BEGIN TRY INSERT INTO dbo.title VALUES (@Title, @Author, @Synopsis) SET @title_no = @@IDENTITY END TRY BEGIN CATCH SET @output = -6 SET @output_msg = CAST('AddBook_SP - ERROR: ' AS char(21)) + CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' inserting title for ISBN: ' AS char(28)) + CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END CATCH -- Next, insert into item BEGIN TRY INSERT INTO dbo.item VALUES (@ISBN, @title_no, @Translation, @Cover, 'Y') END TRY BEGIN CATCH SET @output = -7 SET @output_msg = CAST('AddBook_SP - ERROR: ' AS char(21)) + CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' inserting item for ISBN: ' AS char(27)) + CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END CATCH -- Finally, insert into copy BEGIN TRY INSERT INTO dbo.copy VALUES (@ISBN, 1, @title_no, 'N') END TRY BEGIN CATCH SET @output = -8 SET @output_msg = CAST('AddBook_SP - ERROR: ' AS char(21)) + CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' inserting copy for ISBN: ' AS char(27)) + CAST(@ISBN AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION RETURN @output END CATCH SET @output_msg = CAST('AddBook_SP - ISBN: ' AS char(20)) + CAST(@ISBN AS varchar(8)) + CAST(' copy # 1' AS char(9)) + CAST(' successfully added!' AS char(20)) SELECT @output_msg Message COMMIT TRANSACTION RETURN @ISBN ; go
  • 17. Renew Membership ---------------------------------------------------------------------- /*Renew Membership (dbo.RenewMembership_SP) This procedure is executed when a membership is being renewed. INPUT (and format): Position # Member Number 1 RETURN VALUES -1 Member not an adult -2 Member owes fines -3 Error updating adult Member Number if successful */ CREATE PROC dbo.RenewMembership_SP @Member_noint, @Member_no_outint OUTPUT AS BEGIN TRANSACTION -- Variables for use throughout this proc DECLARE @output_msgvarchar(150), @Fine_Valuesmallmoney SET @Member_no_out = @Member_no -- Check to make sure this is an adult membership IF NOT EXISTS (SELECT member_no FROM dbo.adult WHERE member_no = @Member_no) BEGIN SET @output_msg = CAST('RenewMembership_SP - Member number ' AS char(35)) + CAST(@Member_no AS varchar(8)) + CAST(' is not an adult. Can not renew juveniles!' AS char(43)) SELECT @output_msgErrorMessage SET @Member_no_out = -1 ROLLBACK TRANSACTION RETURN @Member_no_out END -- Check to see if member owes any fines SET @Fine_Value = (SELECT SUM(ISNULL(fine_assessed, 0)) – (SUM(ISNULL(fine_paid, 0)) + SUM(ISNULL(fine_waived, 0))) FROM dbo.loanhist WHERE member_no = @Member_no) IF @Fine_Value > 0 BEGIN SET @output_msg = CAST('RenewMembership_SP - ' AS char(21)) + CAST('Member owes fines in total of $' AS char(31)) + CAST(@Fine_Value AS varchar(8)) SELECT @output_msgErrorMessage ROLLBACK TRANSACTION SET @Member_no_out = -2 RETURN @Member_no_out END -- Update expr_date to one year from now BEGIN TRY UPDATE adult SET expr_date = DATEADD(Year, 1, getdate()) END TRY BEGIN CATCH SET @output_msg = CAST('RenewMembership_SP - ERROR: ' AS char(29)) + CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' updating adult for Member #: ' AS char(31)) + CAST(@Member_no AS varchar(8)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION SET @Member_no_out = -3 RETURN @Member_no_out END CATCH COMMIT TRANSACTION SET @output_msg = CAST('Member: ' AS char(9)) + CAST(@Member_no AS varchar(8)) + CAST(' renewed!'AS char(9)) SELECT @output_msg [Message] RETURN @Member_no ; go
  • 18. Change Juvenile To Adult /*Move over 18 year old Juveniles to adult table (dbo.ChangeJuvenile_SP) This procedure is scheduled to run periodically to move juvenile members who are now over 18 to the adult table. INPUT (and format): Position # None RETURN VALUES -1 Error updating adult -2 Error deleting Juvenile -3 No Juveniles over 18 0 if successful (Note: Can't return single member number because might process multiples. Am outputing each processed member number on messages. */ CREATE PROC dbo.ChangeJuvenile_SP @Member_noint OUTPUT AS BEGIN TRANSACTION -- Variables for use throughout this proc DECLARE @output_msgvarchar(150), @row_countint, @j_expr_datedatetime -- First, check to see if any of the juveniles are over 18! BEGIN TRY IF NOT EXISTS (SELECT * FROM dbo.juvenile WHERE birth_date < DATEADD(Year, -18, getdate())) BEGIN SET @output_msg = 'ChangeJuvenile_SP - No over 18 year-old juveniles to move!‘ SELECT @output_msg [Status Message] ROLLBACK TRANSACTION RETURN -3 END END TRY BEGIN CATCH -- Had a problem with EXISTS???? SET @output_msg = CAST('ChangeJuvenile_SP - ERROR: ' AS char(28)) + CAST(ERROR_NUMBER() AS varchar(5)) + ' ' + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' selecting (EXISTS) juveniles into jv_table.' AS char(44)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION SET @Member_no = -1 PRINT @Member_no RETURN @Member_no END CATCH -- Move over 18 year-old Juveniles to Adult table BEGIN TRY SET @j_expr_date = DATEADD(Year, 1, getdate()) INSERT INTO dbo.adult (member_no, street, city, state, zip, phone_no, expr_date) SELECT j.member_no, a.street, a.city, a.state, a.zip, a.phone_no, @j_expr_date FROM dbo.juvenile j JOIN dbo.adult a ON j.adult_member_no = a.member_no WHERE j.birth_date < DATEADD(Year, -18, getdate()) SET @row_count = @@ROWCOUNT SET @output_msg = CAST('ChangeJuvenile_SP - ' AS char(20)) + CAST(@row_count AS varchar(8)) + CAST(' juveniles moved to adult table.' AS char(32)) SELECT @output_msg [Juveniles moved] END TRY BEGIN CATCH
  • 19. Change Juvenile To Adult (Cont.) -- Move didn't work! SET @output_msg = CAST('ChangeJuvenile_SP - ERROR: ' AS char(28)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' selecting juveniles into jv_table.' AS char(35)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION SET @Member_no = -1 PRINT @Member_no RETURN @Member_no END CATCH -- Report Juveniles who got moved! SELECT j.member_no [Member #], a.street [Street], a.city [City], a.state [State], a.zip [Zip Code], a.phone_no [Phone #], @j_expr_date [Expires], 'Moved to adult' [-- Moved --] FROM dbo.juvenile j JOIN dbo.adult a ON j.adult_member_no = a.member_no WHERE j.birth_date < DATEADD(Year, -18, getdate()) -- Now, delete them from the juvenile table BEGIN TRY DELETE FROM dbo.juvenile WHERE birth_date < DATEADD(Year, -18, getdate()) SELECT 'ChangeJuvenile_SP - Over 18 year-old juvenile(s) deleted!' [-- Deleted --] END TRY BEGIN CATCH -- That didn't work! SET @output_msg = CAST('ChangeJuvenile_SP - ERROR: ' AS char(29)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(10)) + CAST(' deleting juvenile row(s)' AS char(25)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION SET @Member_no = -2 PRINT @Member_no RETURN @Member_no END CATCH -- Success!!!!! COMMIT TRANSACTION RETURN 0 ; go
  • 20. Update Adult /* Update adult stored procedure (dbo.UpdateAdult_SP) This procedure allows the librarian to input changes to be made to the adult's information. INPUT (and format): Position # Member number 1 NOTE: Except for member number, all other fields are OPTIONAL --BUT-- it's pointless to call this proc if you're not going to intput some change! Member name Last name 2 First name 3 Middle Initial 4 Street5 City6 State7 Zip Code 8 Phone Number 9 RETURN VALUES -1 Member does not exist -2 Update requested without submitting any updated information! -3 Error updating adult -4 Error updating member Member Number if successful */ CREATE PROC dbo.UpdateAdult_SP @Member_no int, @Last_Name varchar(15) = NULL, @First_Namevarchar(15) = NULL, @Middle_Initial char(1) = NULL, @Street varchar(15) = NULL, @City varchar(15) = NULL, @State char(2) = NULL, @Zip char(10) = NULL, @Phone_no char(10) = NULL, @Member_no_outint OUTPUT AS BEGIN TRANSACTION -- Variables for use throughout this proc DECLARE @output_msgvarchar(150) SET @Member_no_out = @Member_no -- Does the member number actually exist? IF NOT EXISTS (SELECT member_no FROM dbo.adult WHERE member_no = @Member_no) BEGIN SET @output_msg = CAST('UpdateAdult_SP - ERROR: ' AS char(25)) + CAST('Member number ' AS char(14)) + CAST(@Member_no AS varchar(8)) + CAST(' does not exist!' AS char(16)) SET @Member_no_out = -1 SELECT @output_msg [Error Message] ROLLBACK TRANSACTION RETURN @Member_no_out END -- Did you give me any information to update? IF @Last_Name IS NULL AND @First_Name IS NULL AND @Middle_Initial IS NULL AND @Street IS NULL AND @City IS NULL AND @State IS NULL AND @Zip IS NULL AND @Phone_no IS NULL BEGIN SET @output_msg = CAST('UpdateAdult_SP - ERROR: ' AS char(25)) + CAST('You did not give me any data to change for member number ' AS char(57)) + CAST(@Member_no AS varchar(8)) + CAST('!' AS char(1)) SELECT @output_msg [Error Message] SET @Member_no_out = -2 ROLLBACK TRANSACTION RETURN @Member_no_out END
  • 21. Update Adult (Cont.) -- Figure out what information was provided and change it in adult BEGIN TRY IF @Street IS NOT NULL UPDATE dbo.adult SET street = @Street WHERE member_no = @Member_no IF @City IS NOT NULL UPDATE dbo.adult SET city = @City WHERE member_no = @Member_no IF @State IS NOT NULL UPDATE dbo.adult SET state = @State WHERE member_no = @Member_no IF @Zip IS NOT NULL UPDATE dbo.adult SET zip = @Zip WHERE member_no = @Member_no IF @Phone_no IS NOT NULL UPDATE dbo.adult SET phone_no = @Phone_no WHERE member_no = @Member_no END TRY BEGIN CATCH -- Error updating adult table! SET @output_msg = CAST('UpdateAdult_SP - ERROR: ' AS char(25)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' deleting juvenile row(s)' AS char(25)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION SET @Member_no_out = -3 PRINT @Member_no_out RETURN @Member_no_out END CATCH -- Okay, now for the member table! BEGIN TRY IF @Last_Name IS NOT NULL UPDATE dbo.member SET lastname = @Last_Name WHERE member_no = @Member_no IF @First_Name IS NOT NULL UPDATE dbo.member SET firstname = @First_Name WHERE member_no = @Member_no IF @Middle_Initial IS NOT NULL UPDATE dbo.member SET middleinitial = @Middle_Initial WHERE member_no = @Member_no END TRY BEGIN CATCH -- Problem upading member table! SET @output_msg = CAST('UpdateAdult_SP - ERROR: ' AS char(25)) + CAST(ERROR_NUMBER() AS varchar(5)) + CAST(' LINE: ' AS char(8)) + CAST(ERROR_LINE() AS varchar(4)) + CAST(' updating Adult' AS char(25)) + CAST(' ' AS char(1)) + ERROR_MESSAGE() SELECT @output_msgErrorMessage ROLLBACK TRANSACTION SET @Member_no_out = -4 PRINT @Member_no_out RETURN @Member_no_out END CATCH -- Success! Let them know it! SET @output_msg = CAST('UpdateAdult_SP - Member number ' AS char(31)) + CAST(@Member_no AS varchar(8)) + CAST(' successfully updated!' AS char(22)) COMMIT TRANSACTION SELECT @output_msg PRINT @Member_no_out RETURN @Member_no_out ; go