tim kunze\'s sql server and vb.net portfolio

22
Tim Kunze SQL Developer/DBA Portfolio

Upload: tim-kunze

Post on 24-Dec-2014

443 views

Category:

Documents


2 download

DESCRIPTION

This is a portfolio of SQL Server and VB.net projects on which I\'ve worked.

TRANSCRIPT

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

Tim Kunze

SQL Developer/DBAPortfolio

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

Teaser Rate Offer CalculatorI 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.

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

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

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

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.lastname varchr(15) 1• member.firstname varchar(15) 2• member.middleinitial char(1) 7 OPTIONAL (NULL)• Mailing Address• adult.street varchar(15) 3• adult.city varchar(15) 4• adult.state char(2) 5• adult.zip char(10) 6• Phone Number• phone_no char(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• @lastname varchar(15), @firstname varchar(15), @street varchar(15),• @city varchar(15), @state char(2), @zip char(10),• @middleinitial char(1) = NULL, @phone_no char(13) = NULL,• @NewMember_no smallint OUTPUT• AS• BEGIN TRANSACTION• -- variable for returning error/success messages (troubleshooting)• DECLARE @output_msg varchar(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_no NewMember#, @output_msg

ErrorMessage• 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_no NewMember#, @output_msg

ErrorMessage• 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

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

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

• Firstname lastname street city state zip phone_no• Arnold Kunze E 3rd Place Tulsa OK 74112 NULL

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

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.lastname varchar(15) 2• member.firstname varchar(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_no smallint, @lastname varchar(15), @firstname varchar(15),• @birth_date datetime, @middleinitial char(1) = NULL, • @NewMember_no smallint OUTPUT• AS• BEGIN TRANSACTION• -- variable for returning error/success messages (troubleshooting)• DECLARE @output_msg varchar(150), @expr_date datetime• -- 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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

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

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_no NewMember#, @output_msg ErrorMessage• 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_no NewMember#, @output_msg ErrorMessage• 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

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

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_no smallint• 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

• firstname lastname member_no birth_date• Dane Kunze 10002 1999-01-28 00:00:00.000

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

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 1 MUST 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_no smallint, @ISBN int, @copy smallint, @output smallint• AS• BEGIN TRANSACTION• -- variable for returning error/success messages (troubleshooting)• DECLARE @output_msg varchar(150)• --variable for checking if member owes fines & Count of books checked out• DECLARE @Fine_Value smallmoney, @BooksCheckedOut int, @title varchar(63),• @title_no int, @on_loan char(1), @out_date datetime, @due_date datetime,• @in_date datetime• -- 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• SET @output = -3• ROLLBACK TRANSACTION• RETURN @output• END

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

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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• ROLLBACK TRANSACTION• RETURN @output• END CATCH

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

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_msg ErrorMessage• 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_msg ErrorMessage• 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

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

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:

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

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_no smallint, @ISBN int, @copy smallint, @output smallint• AS• BEGIN TRANSACTION• -- variable for returning error/success messages (troubleshooting)• DECLARE @output_msg varchar(150)• --variable for checking if member owes fines & Count of books checked out• DECLARE @Fine_Value smallmoney, @BooksCheckedOut int, @title varchar(63),• @title_no int, @on_loan char(1), @out_date datetime, @in_date datetime,• @due_date datetime• --, @Book_Table TABLE (@BT_ISBN int, @BT_Copy smallint) --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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• ROLLBACK TRANSACTION• RETURN @output• END

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

Check Out A Book (Cont.)• -- Verify that book is loanable• SET @on_loan = (SELECT loanable FROM dbo.item i• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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

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

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_out int OUTPUT• AS• BEGIN TRANSACTION• -- Variables for use throughout this proc• DECLARE @output_msg varchar(150), @next_copy_no smallint,

@title_no int,• @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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• ROLLBACK TRANSACTION• RETURN -2• END

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

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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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

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

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_no int, @Member_no_out int OUTPUT• AS• BEGIN TRANSACTION• -- Variables for use throughout this proc• DECLARE @output_msg varchar(150), @Fine_Value smallmoney• 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_msg ErrorMessage• 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_msg ErrorMessage• 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_msg ErrorMessage• 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

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

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_no int OUTPUT• AS• BEGIN TRANSACTION• -- Variables for use throughout this proc• DECLARE @output_msg varchar(150), @row_count int, @j_expr_date datetime• -- 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_msg ErrorMessage• 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

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

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_msg ErrorMessage• 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_msg ErrorMessage• ROLLBACK TRANSACTION• SET @Member_no = -2• PRINT @Member_no• RETURN @Member_no• END CATCH• -- Success!!!!!• COMMIT TRANSACTION• RETURN 0• ;• go

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

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• Street 5• City 6• State 7• 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_Name varchar(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_out int OUTPUT• AS

• BEGIN TRANSACTION• -- Variables for use throughout this proc• DECLARE @output_msg varchar(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

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

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_msg ErrorMessage• 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_msg ErrorMessage• 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

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

MORE TO COME!!!