use Community_Assist
--stored procedures
--script
--parameterized view
go
Create proc usp_CityProc
@City nvarchar(255)
As
Select PersonLastname [Last],
personFirstName [first],
PersonEmail Email,
PersonAddressCity City
From Person p
inner join PersonAddress pa
on p.PersonKey=pa.PersonKey
Where PersonAddressCity=@City
exec usp_CityProc 'Kent'
--more complicated procedure
--3 different stages (just the inserts, try catch error trapping
--check to see if already exits
--Register a new user
--insert into person
--when insert into person you need to hash the password
--insert into personAddress
--insert into contacts
go
Create proc usp_RegisterMark2
@lastName nvarchar(255),
@firstName nvarchar(255),
@Email nvarchar(255),
@Password nvarchar(255),
@Apartment nvarchar(255) =null,
@Street nvarchar(255),
@City nvarchar(255)= 'Seattle',
@State nchar(2) ='WA',
@Zip nchar(10),
@home nvarchar(255)= null,
@work nvarchar(255) =null
As
--get the random number seed
Declare @seed int = dbo.fx_GetSeed()
--Declare variable to store the hash
Declare @hashed varbinary(500)
--hash the plain text password
set @hashed = dbo.fx_HashPassword(@seed, @password)
--insert Person
Insert into Person(PersonLastName,
PersonFirstName, PersonEmail, PersonPassWord,
PersonEntryDate, PersonPassWordSeed)
Values(@lastName,@firstName,@email,
@hashed,GetDate(),@seed)
--get the most recent identity from Person
Declare @PersonKey int = Ident_Current('Person')
--insert into PersonAddress
Insert into PersonAddress (PersonAddressApt,
PersonAddressStreet, PersonAddressCity,
PersonAddressState, PersonAddressZip, PersonKey)
Values(@Apartment,@Street, @City,@state,@zip, @PersonKey)
--insert into contact
if @home is not null
begin
Insert into Contact(ContactNumber, ContactTypeKey, PersonKey)
Values(@home, 1, @PersonKey)
end
if @work is not null
begin
Insert into Contact(ContactNumber, ContactTypeKey, PersonKey)
Values(@Work, 2, @PersonKey)
end
go
exec usp_RegisterMark2
@lastName='Branson',
@firstName='Martin',
@Email='bmartin@gmail.com',
@Password='BransonPass',
@Street='1001 North Elsewhere',
@Zip='98100',
@home='2065552314'
Select * from Contact
--second version with try catch
--transactions
go
Alter proc usp_RegisterMark2
@lastName nvarchar(255),
@firstName nvarchar(255),
@Email nvarchar(255),
@Password nvarchar(255),
@Apartment nvarchar(255) =null,
@Street nvarchar(255),
@City nvarchar(255)= 'Seattle',
@State nchar(2) ='WA',
@Zip nchar(10),
@home nvarchar(255)= null,
@work nvarchar(255) =null
As
--get the random number seed
Declare @seed int = dbo.fx_GetSeed()
--Declare variable to store the hash
Declare @hashed varbinary(500)
--hash the plain text password
set @hashed = dbo.fx_HashPassword(@seed, @password)
--begin transaction
begin tran
--begin try
Begin try
--insert Person
Insert into Person(PersonLastName,
PersonFirstName, PersonEmail, PersonPassWord,
PersonEntryDate, PersonPassWordSeed)
Values(@lastName,@firstName,@email,
@hashed,GetDate(),@seed)
--get the most recent identity from Person
Declare @PersonKey int = Ident_Current('Person')
--insert into PersonAddress
Insert into PersonAddress (PersonAddressApt,
PersonAddressStreet, PersonAddressCity,
PersonAddressState, PersonAddressZip, PersonKey)
Values(@Apartment,@Street, @City,@state,@zip, @PersonKey)
--insert into contact
if @home is not null
begin
Insert into Contact(ContactNumber, ContactTypeKey, PersonKey)
Values(@home, 1, @PersonKey)
end
if @work is not null
begin
Insert into Contact(ContactNumber, ContactTypeKey, PersonKey)
Values(@Work, 2, @PersonKey)
end
Commit tran --write the transaction
End try --end the try
Begin Catch --catch an error
Rollback tran --undo anything that has been done
print Error_Message()
End catch
go
exec usp_RegisterMark2
@lastName='Branson',
@firstName='Martin',
@Email='bmartin@gmail.com',
@Password='BransonPass',
@Street='1001 North Elsewhere',
@Zip='98100',
@home='2065552314'
--third and final version
--we will check to see if person exists
go
Alter proc usp_RegisterMark2
@lastName nvarchar(255),
@firstName nvarchar(255),
@Email nvarchar(255),
@Password nvarchar(255),
@Apartment nvarchar(255) =null,
@Street nvarchar(255),
@City nvarchar(255)= 'Seattle',
@State nchar(2) ='WA',
@Zip nchar(10),
@home nvarchar(255)= null,
@work nvarchar(255) =null
As
if Not exists
(Select * from Person
Where PersonEmail=@Email
And PersonLastName = @LastName
And PersonFirstName=@FirstName)
Begin --begin if
--get the random number seed
Declare @seed int = dbo.fx_GetSeed()
--Declare variable to store the hash
Declare @hashed varbinary(500)
--hash the plain text password
set @hashed = dbo.fx_HashPassword(@seed, @password)
--begin transaction
begin tran
--begin try
Begin try
--insert Person
Insert into Person(PersonLastName,
PersonFirstName, PersonEmail, PersonPassWord,
PersonEntryDate, PersonPassWordSeed)
Values(@lastName,@firstName,@email,
@hashed,GetDate(),@seed)
--get the most recent identity from Person
Declare @PersonKey int = Ident_Current('Person')
--insert into PersonAddress
Insert into PersonAddress (PersonAddressApt,
PersonAddressStreet, PersonAddressCity,
PersonAddressState, PersonAddressZip, PersonKey)
Values(@Apartment,@Street, @City,@state,@zip, @PersonKey)
--insert into contact
if @home is not null
begin
Insert into Contact(ContactNumber, ContactTypeKey, PersonKey)
Values(@home, 1, @PersonKey)
end
if @work is not null
begin
Insert into Contact(ContactNumber, ContactTypeKey, PersonKey)
Values(@Work, 2, @PersonKey)
end
Commit tran --write the transaction
End try --end the try
Begin Catch --catch an error
Rollback tran --undo anything that has been done
print Error_Message()
End catch
End--end if
Else --if person does exist
Begin
print 'Already in database'
End
go
exec usp_RegisterMark2
@lastName='Branson',
@firstName='Martin',
@Email='bmartin@gmail.com',
@Password='BransonPass',
@Street='1001 North Elsewhere',
@Zip='98100',
@home='2065552314'
--create a stored procedure to
--update address information
go
Create proc usp_UpdateAddress
@PersonAddressApt nvarchar(255),
@PersonAddressStreet nvarchar(255),
@PersonAddressCity nvarchar(255),
@PersonAddressState nvarchar(255),
@PersonAddressZip nvarchar(255),
@PersonKey int
As
Begin tran
Begin try
Update PersonAddress
Set PersonAddressApt=@personAddressApt,
PersonAddressStreet=@personAddressStreet,
PersonAddressCity=@PersonAddressCity,
PersonAddressState = @PersonAddressState,
PersonAddressZip=@PersonAddressZip
Where PersonKey = @PersonKey
Commit tran
End Try
Begin Catch
Rollback tran
print Error_message()
End Catch
Select * from PersonAddress
Exec usp_UpdateAddress
@PersonAddressApt='10A',
@PersonAddressStreet='1001 North Mann Street',
@PersonAddressCity='Seattle',
@PersonAddressState='Wa',
@PersonAddressZip='98001',
@PersonKey=1
Monday, May 22, 2017
Stored Procedures
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment