我對動態過程很新穎,希望這裏的某個人可以幫助我解決以下問題。SQL Server:如何在存儲過程中設置動態列名稱
這似乎是我的問題與我的Where子句的AND部分。我沒有在這裏得到一個錯誤 - 它只是沒有返回任何結果。
編輯:我的動態列名稱是「R. @ searchCategory」。
我到目前爲止的過程:
ALTER PROCEDURE [dbo].[FetchRequests]
@searchCategory nvarchar(100) = '',
@searchTerm nvarchar(256) = ''
AS
BEGIN
BEGIN
DECLARE @sql nvarchar(max)
SET @sql = 'SELECT TOP 100
R.logID,
R.flag,
R.reviewer,
R.modBy,
A.Email AS requesterEmail,
B.Email AS approverEmail,
L.locale AS region,
L.country AS countryName
FROM LogRequests R
LEFT JOIN EmpTable A
ON A.NTID = R.requester
LEFT JOIN EmpTable B
ON B.NTID = R.approver
INNER JOIN Locales_Countries L
ON R.country = L.isoCode
WHERE (R.logStatus LIKE ''%Completed%'' OR R.logStatus LIKE ''%Closed%'')
AND R.' + @searchCategory + ''' LIKE ''%' + @searchTerm + '%''
ORDER BY R.dateNeeded desc, R.dateRec desc, R.prio desc, R.EID desc
FOR XML PATH(''requests''), ELEMENTS, TYPE, ROOT(''ranks'')'
EXEC(@sql)
END
END
提前,邁克非常感謝。
我很驚訝這個執行的話 - 你有一個額外的單引號,則@searchCategory,應該使該語句拋出一個語法異常之後。此外,你真的打開SQL注入攻擊與此... –