The document contains SQL statements that create database tables, functions, views and procedures for a service provider database. It defines over 30 tables to store user, client, service provider and other related data. It also creates a function to retrieve a user's full name including middle name(s), a view to join user and service provider tables, and a stored procedure.
14. WHILE(@n <= @noOfMiddleNames)
BEGIN
WITH MyCte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY M.ID) AS Row, M.MName
FROM tblUser AS U
INNER JOIN tblMiddleName AS M
ON U.UserId = M.UserId
WHERE U.UserId =@UID
)
SELECT @MiddleName=MName
FROM MyCte
WHERE Row = @n
SET @FullMiddleName = @FullMiddleName + @MiddleName
IF(@n != @noOfMiddleNames)
BEGIN
SET @FullMiddleName = @FullMiddleName + ' '
END
SET @n=@n + 1
END
RETURN @FullMiddleName
END
CREATE VIEW vwtblUser_tblServiceProviderWithFullName
AS
SELECT U.UserId AS ID, COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') +
COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName,
U.Email AS Email, U.City AS City, S.Image AS Image, S.BackgroundImage AS BackgroundImage, S.Latitude AS
Latitude,
S.Longitude AS Longitude, S.JobType AS Profession
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId=S.ServiceProviderId;
CREATE PROCEDURE spGet10RandomServiceProviders
15. AS
BEGIN
DECLARE @NoOfSeriveProviders INT;
DECLARE @A INT;
DECLARE @B INT;
DECLARE @C INT;
DECLARE @D INT;
DECLARE @E INT;
DECLARE @F INT;
DECLARE @G INT;
DECLARE @H INT;
DECLARE @I INT;
DECLARE @J INT;
SELECT @NoOfSeriveProviders=COUNT(ServiceProviderId)
FROM tblServiceProvider;
SELECT @A = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@B = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@C = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@D = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@E = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@F = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@G = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@H = FLOOR(RAND()*(@NoOfSeriveProviders)+1),@I = FLOOR(RAND()*(@NoOfSeriveProviders)+1),
@J = FLOOR(RAND()*(@NoOfSeriveProviders)+1);
WITH MyCte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY S.ServiceProviderId) AS ROW,
COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') +
COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName,
S.WorkAddress AS WorkAddress, S.JobType AS Profession
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId = S.ServiceProviderId
WHERE U.UserId =S.ServiceProviderId
)
SELECT FullName,WorkAddress, Profession
FROM Mycte
16. WHERE ROW IN (@A, @B, @C, @D, @E, @F, @G, @H, @I, @J);
END;
CREATE FUNCTION getFullContactDetail(@UID INTEGER)
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @ContactDetail VARCHAR(25)
DECLARE @FullContactDetail VARCHAR(255)
DECLARE @noOfContactDetails INTEGER
DECLARE @n INTEGER
SET @ContactDetail = ''
SET @FullContactDetail = ''
SELECT @noOfContactDetails=COUNT(UserId)
FROM tblContactNumber
WHERE UserId =@UID;
SET @n=1;
WHILE(@n <= @noOfContactDetails)
BEGIN
WITH MyCte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY C.UserId) AS Row, C.Tel
FROM tblUser AS U
INNER JOIN tblContactNumber AS C
ON U.UserId = C.UserId
WHERE U.UserId =@UID
)
SELECT @ContactDetail=Tel
FROM MyCte
WHERE Row = @n
SET @FullContactDetail = @FullContactDetail + @ContactDetail;
IF(@n != @noOfContactDetails)
BEGIN
17. SET @FullContactDetail = @FullContactDetail + '/';
END
SET @n=@n + 1
END
RETURN @FullContactDetail
END
CREATE PROCEDURE spGetServiceProvidersByJobType
@JobType VARCHAR(25)
AS
BEGIN
SELECT COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') +
COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName,
U.City, dbo.getFullContactDetail(U.UserId) AS ContactDetails, S.WorkAddress, U.Email
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId = S.ServiceProviderId
WHERE S.JobType = @JobType;
END
CREATE PROCEDURE spGetServiceProvidersByCity
@City VARCHAR(25)
AS
BEGIN
SELECT COALESCE(U.Title + ' ', '') + COALESCE(U.FName + ' ', '') +
COALESCE(dbo.getFullMiddleName(U.UserId) + ' ', '') + COALESCE(U.LName, '') AS FullName,
dbo.getFullContactDetail(U.UserId) AS ContactDetails, S.WorkAddress AS WorkAddress, S.JobType
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId = S.ServiceProviderId
WHERE U.City = @City;
END
--SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='tblUser'
CREATE VIEW vwtblUser_tblClient_ClientProfile
AS
18. SELECT U.UserId AS ID, U.Title, U.FName, dbo.getFullMiddleName(U.UserId) AS FullMiddleName, U.LName,
U.Email, U.City, C.Address, dbo.getFullContactDetail(U.UserId) AS ContactDetails,
C.Latitude,C.Longitude
FROM tblUser AS U
INNER JOIN tblClient AS C
ON U.UserId=C.ClientId;
CREATE VIEW vwtblUser_tblServiceProvider_LawyerProfile
AS
SELECT U.UserId AS ID, U.Title, U.FName, U.LName,
U.Email, U.City, S.JobType,
dbo.getFullUniversityDetailOfLawyer(U.UserId) AS UniversityDetail, S.DOB,
S.Description, S.Fax, dbo.getFullContactDetail(U.UserId) AS ContactDetails,
S.WorkAddress
FROM tblUser AS U
INNER JOIN tblServiceProvider AS S
ON U.UserId=S.ServiceProviderId
WHERE S.JobType='Lawyer';
CREATE TRIGGER tr_vwtblUser_tblClient_ClientProfile
ON vwtblUser_tblClient_ClientProfile
INSTEAD OF UPDATE
AS
BEGIN
--If client ID is to be updated.
DECLARE @ID INT
DECLARE @fullMiddleName VARCHAR(255)
DECLARE @fullContactDetail VARCHAR(255)
SELECT @ID = ID FROM inserted
IF(UPDATE(ID))
BEGIN
UPDATE tblClient
SET ClientId = inserted.ID FROM inserted
WHERE tblClient.ClientId = @ID
END
--If client Title is to be updated.
IF(UPDATE(Title))
19. BEGIN
UPDATE tblUser
SET Title = inserted.Title FROM inserted
WHERE tblUser.UserId = @ID
END
--If client First Name is to be updated.
IF(UPDATE(FName))
BEGIN
UPDATE tblUser
SET FName = inserted.FName FROM inserted
WHERE tblUser.UserId = @ID
END
--If client Full Middle Name is to be updated.
IF(UPDATE(FullMiddleName))
BEGIN
DELETE FROM tblMiddleName
WHERE UserId=@ID;
SELECT @fullMiddleName = inserted.FullMiddleName FROM inserted
INSERT INTO tblMiddleName(UserId, MName)
SELECT @ID,splitdata FROM dbo.fnSplitString(@fullMiddleName,' ')
END
--If client Last Name is to be updated.
IF(UPDATE(LName))
BEGIN
UPDATE tblUser
SET LName = inserted.LName FROM inserted
WHERE tblUser.UserId = @ID
END
--If client Email is to be updated.
IF(UPDATE(Email))
20. BEGIN
UPDATE tblUser
SET Email = inserted.Email FROM inserted
WHERE tblUser.UserId = @ID
END
--If client City is to be updated.
IF(UPDATE(City))
BEGIN
UPDATE tblUser
SET City = inserted.City FROM inserted
WHERE tblUser.UserId = @ID
END
--If client Address is to be updated.
IF(UPDATE(Address))
BEGIN
UPDATE tblClient
SET Address = inserted.Address FROM inserted
WHERE tblClient.ClientId = @ID
END
--If Client ContractDetails is to be updated.
IF(UPDATE(ContactDetails))
BEGIN
DELETE FROM tblContactNumber
WHERE UserId=@ID;
SELECT @fullContactDetail = inserted.ContactDetails FROM inserted
INSERT INTO tblContactNumber(UserId, Tel)
SELECT @ID,splitdata FROM dbo.fnSplitString(@fullContactDetail,'/')
END
--If Client Latitude is to be updated.
IF(UPDATE(Latitude))
BEGIN
21. UPDATE tblClient
SET Latitude = inserted.Latitude FROM inserted
WHERE ClientId = @ID
END
--If Client Longitude is to be updated.
IF(UPDATE(Longitude))
BEGIN
UPDATE tblClient
SET Longitude = inserted.Longitude FROM inserted
WHERE ClientId = @ID
END
END;
CREATE PROC spEditClientDetails
@Id INT,
@Title VARCHAR(25) = NULL,
@FName VARCHAR(25) = NULL,
@LName VARCHAR(25) = NULL,
@FullMiddleName VARCHAR(255) = NULL,
@Email VARCHAR(50) = NULL,
@City VARCHAR(25) = NULL,
@Address VARCHAR(510) = NULL,
@ContactDetails VARCHAR(255) = NULL,
@Latitude VARCHAR(25) = NULL,
@Longitude VARCHAR(25) = NULL
AS
BEGIN
--If client Title is to be updated.
IF(@Title IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Title = @Title
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client First Name is to be updated.
22. IF(@FName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET FName = @FName
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client Full Middle Name is to be updated.
IF(@FullMiddleName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET FullMiddleName = @FullMiddleName
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client Last Name is to be updated.
IF(@LName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET LName = @LName
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client Email is to be updated.
IF(@Email IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Email = @Email
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If client City is to be updated.
IF(@City IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET City = @City
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
23. END
--If client Address is to be updated.
IF(@Address IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Address = @Address
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If Client ContractDetails is to be updated.
IF(@ContactDetails IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET ContactDetails = @ContactDetails
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If Client Latitude is to be updated.
IF(@Latitude IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Latitude = @Latitude
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
--If Client Longitude is to be updated.
IF(@Longitude IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblClient_ClientProfile
SET Longitude = @Longitude
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
END
END;
--SELECT COMPATIBILITY_LEVEL
--FROM SYS.DATABASES WHERE name = 'dbServiceProvider';
24. --ALTER DATABASE dbServiceProvider
--SET COMPATIBILITY_LEVEL = 120;
CREATE FUNCTION [dbo].[fnSplitString]
(
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @output TABLE(splitdata NVARCHAR(MAX)
)
BEGIN
DECLARE @start INT, @end INT
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1 BEGIN
IF @end = 0
SET @end = LEN(@string) + 1
INSERT INTO @output (splitdata)
VALUES(SUBSTRING(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)
END
RETURN
END
--SELECT 2,splitdata FROM dbo.fnSplitString('Malika Priyashan Kannangara',' ')
CREATE FUNCTION getFullUniversityDetailOfLawyer(@UID INTEGER)
RETURNS VARCHAR(510)
AS
BEGIN
DECLARE @UniversityDetail VARCHAR(50)
DECLARE @FullUniversityDetail VARCHAR(510)
DECLARE @noOfUniversityDetail INTEGER
DECLARE @n INTEGER
SET @UniversityDetail = ''
25. SET @FullUniversityDetail = ''
SELECT @noOfUniversityDetail=COUNT(LawyerId)
FROM tblUniversityEducationOfLawyer
WHERE LawyerId=@UID;
SET @n=1;
WHILE(@n <= @noOfUniversityDetail)
BEGIN
WITH MyCte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY Lawyerid) AS Row, UniversityName, [From], [To]
FROM tblUniversityEducationOfLawyer
WHERE Lawyerid =@UID
)
SELECT @UniversityDetail = UniversityName
FROM MyCte
WHERE Row = @n
SET @FullUniversityDetail = @FullUniversityDetail + @UniversityDetail;
IF(@n != @noOfUniversityDetail)
BEGIN
SET @FullUniversityDetail = @FullUniversityDetail + '/';
END
SET @n=@n + 1
END
RETURN @FullUniversityDetail
END
CREATE PROC spEditServiceProviderDetails
@Id INT,
@Title VARCHAR(25) = NULL,
@FName VARCHAR(25) = NULL,
@LName VARCHAR(25) = NULL,
@Email VARCHAR(50) = NULL,
@City VARCHAR(25) = NULL,
26. @DOB DATETIME = NULL,
@JobType VARCHAR(25) = NULL,
@WorkAddress VARCHAR(510) = NULL,
@ContactDetails VARCHAR(255) = NULL,
@Description VARCHAR(MAX) = NULL,
@UniversityDetail VARCHAR(510) = NULL,
@Fax VARCHAR(25) = NULL
AS
BEGIN
--If lawyer Title is to be updated.
IF(@Title IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET Title = @Title
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer First Name is to be updated.
IF(@FName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET FName = @FName
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Last Name is to be updated.
IF(@LName IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET LName = @LName
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Email is to be updated.
IF(@Email IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
27. SET Email = @Email
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Date of Birth is to be updated.
IF(@DOB IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET DOB = @DOB
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer University Details is to be updated.
IF(@DOB IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET UniversityDetail = @UniversityDetail
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer City is to be updated.
IF(@City IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET City = @City
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Job Type is to be updated.
IF(@City IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET JobType = @JobType
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Work Address is to be updated.
28. IF(@WorkAddress IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET WorkAddress = @WorkAddress
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Contract Details is to be updated.
IF(@ContactDetails IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET ContactDetails = @ContactDetails
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Fax is to be updated.
IF(@Fax IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET Fax = @Fax
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
--If lawyer Description is to be updated.
IF(@Description IS NOT NULL)
BEGIN
UPDATE vwtblUser_tblServiceProvider_LawyerProfile
SET [Description] = @Description
WHERE vwtblUser_tblServiceProvider_LawyerProfile.ID = @ID
END
END;
CREATE TRIGGER tr_vwtblUser_tblServiceProvider_LawyerProfile
ON vwtblUser_tblServiceProvider_LawyerProfile
INSTEAD OF UPDATE
AS
BEGIN
29. --If lawyer ID is to be updated.
DECLARE @ID INT
DECLARE @UniversityDetails VARCHAR(510)
DECLARE @fullContactDetail VARCHAR(255)
SELECT @ID = ID FROM inserted
IF(UPDATE(ID))
BEGIN
UPDATE tblServiceProvider
SET ServiceProviderId = inserted.ID FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Title is to be updated.
IF(UPDATE(Title))
BEGIN
UPDATE tblUser
SET Title = inserted.Title FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer First Name is to be updated.
IF(UPDATE(FName))
BEGIN
UPDATE tblUser
SET FName = inserted.FName FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer Last Name is to be updated.
IF(UPDATE(LName))
BEGIN
UPDATE tblUser
SET LName = inserted.LName FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer Email is to be updated.
IF(UPDATE(Email))
30. BEGIN
UPDATE tblUser
SET Email = inserted.Email FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer City is to be updated.
IF(UPDATE(City))
BEGIN
UPDATE tblUser
SET City = inserted.City FROM inserted
WHERE tblUser.UserId = @ID
END
--If lawyer Date Of Birth is to be updated.
IF(UPDATE(DOB))
BEGIN
UPDATE tblServiceProvider
SET DOB = inserted.DOB FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Work Address is to be updated.
IF(UPDATE(WorkAddress))
BEGIN
UPDATE tblServiceProvider
SET WorkAddress = inserted.WorkAddress FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Contract Details is to be updated.
IF(UPDATE(ContactDetails))
BEGIN
DELETE FROM tblContactNumber
WHERE UserId=@ID;
SELECT @fullContactDetail = inserted.ContactDetails FROM inserted
31. INSERT INTO tblContactNumber(UserId, Tel)
SELECT @ID,splitdata FROM dbo.fnSplitString(@fullContactDetail,'/')
END
--If lawyer University Details is to be updated.
IF(UPDATE(UniversityDetail))
BEGIN
DELETE FROM tblUniversityEducationOfLawyer
WHERE LawyerId=@ID;
SELECT @UniversityDetails = inserted.UniversityDetail FROM inserted
INSERT INTO tblUniversityEducationOfLawyer(LawyerId, UniversityName)
SELECT @ID,splitdata FROM dbo.fnSplitString(@UniversityDetails,'/')
END
--If lawyer Fax is to be updated.
IF(UPDATE(Fax))
BEGIN
UPDATE tblServiceProvider
SET Fax = inserted.Fax FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Job Type is to be updated.
IF(UPDATE(JobType))
BEGIN
UPDATE tblServiceProvider
SET JobType = inserted.JobType FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
--If lawyer Description is to be updated.
IF(UPDATE(Description))
BEGIN
UPDATE tblServiceProvider
32. SET Description = inserted.Description FROM inserted
WHERE tblServiceProvider.ServiceProviderId = @ID
END
END;
ALTER PROC spEditClientName
@Id INT,
@Title VARCHAR(25),
@FName VARCHAR(25),
@FullMiddleName VARCHAR(255),
@LName VARCHAR(25)
AS
BEGIN
--Client Title is to be updated.
UPDATE tblUser
SET Title = @Title
WHERE tblUser.UserId = @ID
--Client First Name is to be updated.
UPDATE tblUser
SET FName = @FName
WHERE tblUser.UserId = @ID
--Client Full Middle Name is to be updated.
UPDATE vwtblUser_tblClient_ClientProfile
SET FullMiddleName = @FullMiddleName
WHERE vwtblUser_tblClient_ClientProfile.ID = @ID
--Client Last Name is to be updated.
UPDATE tblUser
SET LName = @LName
WHERE tblUser.UserId = @ID
END;