Reputation: 1045
USE [Test] Go
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_ViewAdvanceSearchDetails]
(
@JobStatus nvarchar(20)
)
AS BEGIN
DECLARE @SelectQuery nvarchar(max)
DECLARE @JobSeekerStatus nvarchar(20)
SET @SelectQuery= N'SELECT Tbl_JobSeekers.National_Id, Tbl_JobSeekers.JobSeeker_EnglishName, Tbl_JobSeekers.JobSeeker_Arabicname, Tbl_JobSeekers.Mobile, Tbl_JobSeekers.City,
Tbl_JobSeekers.Nationality, Tbl_JobSeekers.Education, Tbl_JobSeekers.Experience, Tbl_JobSeekers.Category, Tbl_JobSeekers.JobSeekerStatus,
Tbl_JobSeekers.StatusEmployer, Tbl_JobSeekers.ImagePath, Tbl_JobSeekers.ResumePath, Tbl_JobSeekers.Remarks, Tbl_JobSeekers.Created_By,
Tbl_JobSeekers.Created_Date
FROM Tbl_JobSeekers INNER JOIN
Tbl_City ON Tbl_JobSeekers.City = Tbl_City.City_Name INNER JOIN
Tbl_Qualification ON Tbl_JobSeekers.Education = Tbl_Qualification.Education_Name INNER JOIN
Tbl_Categories ON Tbl_JobSeekers.Category = Tbl_Categories.Category_Name INNER JOIN
Tbl_Experience ON Tbl_JobSeekers.Experience = Tbl_Experience.Experience_Years'
SET @JobSeekerStatus=@JobStatus
IF (@JobSeekerStatus='Selected')
BEGIN
SET @SelectQuery= @SelectQuery + ' WHERE Tbl_JobSeekers.JobSeekerStatus=' + @JobSeekerStatus + ' ORDER BY Tbl_JobSeekers.National_Id DESC'
END
ELSE IF (@JobSeekerStatus='Working')
BEGIN
SET @SelectQuery= @SelectQuery + ' WHERE Tbl_JobSeekers.JobSeekerStatus=' + @JobSeekerStatus + ' ORDER BY Tbl_JobSeekers.National_Id DESC'
END
ELSE IF (@JobSeekerStatus='Looking')
BEGIN
SET @SelectQuery= @SelectQuery + ' WHERE Tbl_JobSeekers.JobSeekerStatus=' + @JobSeekerStatus + ' ORDER BY Tbl_JobSeekers.National_Id DESC'
END
ELSE IF (@JobSeekerStatus='All')
BEGIN
SET @SelectQuery= @SelectQuery + ' WHERE Tbl_JobSeekers.JobSeekerStatus=' + @JobSeekerStatus + ' ORDER BY Tbl_JobSeekers.National_Id DESC'
END
ELSE
BEGIN
SET @SelectQuery= @SelectQuery + ' ORDER BY Tbl_JobSeekers.National_Id DESC'
END
PRINT @SelectQuery
EXEC sp_executesql @SelectQuery, N'@JobSeekerStatus nvarchar(20)', @JobSeekerStatus
END
Hi All, Based on your suggestions ,I re corrected from Exec to EXEC sp_executesql and passing parameters as value, Query is still not executing showing error message "Invalid Column 'Selected' " (which i supposed to pass as parameter value). Whatever I am passing value, its showing invalid column with that paramenter.
Upvotes: 1
Views: 77
Reputation: 1045
Thanks for all your suggestions , Its working fine.
My Modified Code:
SET @SelectQuery= @SelectQuery + ' WHERE Tbl_JobSeekers.JobSeekerStatus='''+ @JobSeekerStatus +''' ORDER BY Tbl_JobSeekers.National_Id DESC'
EXEC sp_executesql @SelectQuery, N'@JobSeekerStatus nvarchar(20)',@JobSeekerStatus
Upvotes: 1
Reputation: 11
You need to wrap the @JobSeekerStatus in 3 quotes
Updated to use QUOTENAME (thanks to ughai)
E.G
SET @SelectQuery= @SelectQuery + ' WHERE Tbl_JobSeekers.JobSeekerStatus=' + QUOTENAME(@JobSeekerStatus, '''') + ' ORDER BY Tbl_JobSeekers.National_Id DESC'
Upvotes: 1