--stored Procedures /* create a proc that adds a new donor and donation Get all the values for the tables below Insert into person Insert into PersonAddress Insert into Personcontact Insert into Donation all or none */ use CommunityAssist Go Alter Procedure usp_NewDonor --get parameters @lastName nvarchar(255), @firstName nvarchar(255), @street nvarchar(255), @apartment nvarchar(255) = null, @city nvarchar(255) = 'Seattle', @state nvarchar(2)='WA', @zip nvarchar(10), @homePhone nvarchar(255), @email nvarchar(255), @donationAmount money As --declare class level variable Declare @personKey int Begin Transaction Begin Try --check to see if person exists if not exists (Select Lastname, firstName, ContactInfo From Person p inner Join PersonContact pa on p. PersonKey = pa.PersonKey where LastName=@LastName And Firstname=@firstname and Contactinfo = @Email and contactTypeKey=6) Begin --begin if they don't exist Insert into Person (Lastname, firstName) Values (@lastName, @firstName) --personkey is set to new identity Set @PersonKey=ident_current('Person') Insert into PersonAddress(Street, Apartment, [State], City, Zip, PersonKey) Values (@street, @Apartment, @State, @City, @Zip,@personKey ) Insert into PersonContact(ContactInfo, PersonKey, ContactTypeKey) Values(@homePhone, @PersonKey, 1), (@Email, @personKey, 6) End -- end if true Else --if they do exist Begin --get the existing person's key Select @personkey=p.personkey from Person p inner join PersonContact pc on p. PersonKey=pc.Personkey Where LastName=@lastName And FirstName=@FirstName And Contactinfo = @Email And ContactTypeKey = 6 End --end of they do exist --no matter what insert donation Insert into Donation(DonationDate, DonationAmount, PersonKey, EmployeeKey) Values (GetDate(), @donationAmount, @personKey, null) Commit Tran End try Begin Catch print 'The transaction failed ' + error_message() Rollback Tran End catch Go Exec usp_NewDonor @lastName ='Hathawat', @firstName ='Ann', @street ='111 somewhere Street', @Apartment='101', @City='Bellevue', @zip ='98556', @homePhone='2065555753', @email ='hathawat@gmail.com', @donationAmount =3000 Create unique index ix_email on PersonContact(contactInfo) where ContactTypeKey=6 Select * From Person Select * from PersonAddress Select * From PersonContact Select * From Donation
Monday, February 25, 2013
Stored Procedure
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment