У меня есть хранимая процедура, в которой мне нужно сравнить значения, используя =
, <
, >
в качестве параметра и сравнить его с другим значением значения параметра, который имеет значение 1,2,3, 4,5, но не знаю, как это сделать, пожалуйста, помогите.Динамический запрос хранимой процедуры с if
Вот моя хранимая процедура, что я пытался до сих пор, и у меня есть три таблицы user
, RatingReview
и accounttype
:
Create Procedure searchsp_LenderSearch
@pAccountTypeId int =null,
@pFirstName varchar(25)=null,
@pLastName varchar(35)=null,
@pZip varchar(10)=null,
@pOperator varchar(2)=null,
@pRating varchar(2)=null
AS
BEGIN
SET NOCOUNT ON;
Declare @SQLQuery AS NVarchar(4000)
SET @SQLQuery=
'select
at.AccountName,
U.UserId,
U.FirstName,
U.LastName,
U.NMLS,
U.[Address],
U.PrimaryEmailId As Office,
U.AdditionalEmail As Personal,
U.DirectPhone As Work,
U.Mobile,
R.RatingStar
from [User] U
left outer join RatingReview R on R.UserId =U.UserId
left outer join AccountType at on at.AccountTypeId = U.AccountTypeId
where U.Deleted =0
AND at.AccountTypeId = '+CAST(@pAccountTypeId as Varchar(10))+'
AND U.FirstName = ''' + @pFirstName + '''
AND U.LastName = ''' + @pLastName + '''
AND U.Zip = ''' + @pZip + '''
AND R.RatingStar = ''' + @pRating + ''''
IF(@pAccountTypeId !=null OR @pAccountTypeId != '')
BEGIN
SET @[email protected]+' AND at.AccountTypeId='+CONVERT(VARCHAR, @pAccountTypeId)
END
IF(@pFirstName !=null OR @pFirstName != '')
BEGIN
SET @[email protected]+' AND U.FirstName Like ''%' + @pFirstName + '%'''
END
IF(@pLastName !=null OR @pLastName != '')
BEGIN
SET @[email protected]+' AND U.LastName Like ''%' + @pLastName + '%'''
END
IF(@pZip !=null OR @pZip != '')
BEGIN
SET @[email protected]+' AND U.Zip Like ''%' + @pZip + '%'''
END
IF(@pRating !=null OR @pRating != '')
BEGIN
SET @[email protected]+' AND R.RatingStar Like ''%' + @pRating + '%'''
END
IF(@pOperator = '=')
BEGIN
SET @SQLQuery += ' AND R.RatingStar = ' + CAST(@pRating AS NVARCHAR(5)) + ''
END
IF(@pOperator = '>')
BEGIN
SET @SQLQuery += ' AND R.RatingStar > ' + CAST(@pRating AS NVARCHAR(5)) + ''
END
IF(@pOperator = '<')
BEGIN
SET @SQLQuery += ' AND R.RatingStar < ' + CAST(@pRating AS NVARCHAR(5)) + ''
END
SET @[email protected]+
'group by
at.AccountName,
U.UserId,
U.FirstName,
U.LastName,
U.NMLS,
U.[Address],
U.PrimaryEmailId,
U.AdditionalEmail,
U.DirectPhone,
U.Mobile,
R.RatingStar'
EXEC (@SQLQuery)
END
Благодарю вас так много сэр @ JPW. он помогает много – Felixerity
сэр при выполнении вышеуказанного условия exec searchsp_LenderSearch 1, 'John', 'Adams', '100AA', '=', 5 работает, но условие exec searchsp_LenderSearch 1, 'John', 'Adams', ' 100AA ','> ', 1 не работает. вы можете помочь мне на этом – Felixerity
@ReshavChandanSingh. Как он не работает? – jpw