0
CREATE PROCEDURE GetUserDetails
(
@ParameterListWithDataType VARCHAR(MAX),
@ParameterNameList VARCHAR(MAX),
@ParameterValues VARCHAR(MAX),
@WhereCondition VARCHAR(MAX)
)
AS
BEGIN
DECLARE @sql NVARCHAR(4000)
SET @sql = ' SELECT FirstName, MiddleName, LastName, Address, Salary FROM UserDetails WHERE ' + @WhereCondition
EXEC sp_executesql @sql, @ParameterListWithDataType, @ParameterNameList
END
EXEC GetUserDetails @ParameterListWithDataType = '@FirstName VARCHAR(100)', @ParameterNameList = '@FirstName', @ParameterValues = 'ABC', @WhereCondition = 'FirstName = @FirstName '
EXEC GetUserDetails @ParameterListWithDataType = '@FirstName VARCHAR(100), @LastName VARCHAR(100)', @ParameterNameList = '@FirstName,@LastName', @ParameterValues = '''ABC'', ''XYZ''', @WhereCondition = 'FirstName = @FirstName OR LastName = @LastName'
EXEC GetUserDetails @ParameterListWithDataType = '@FirstName VARCHAR(100), @LastName VARCHAR(100), @MiddleName VARCHAR(100)', @ParameterNameList = '@FirstName,@LastName,@MiddleName', @ParameterValues = '''ABC'', ''XYZ'', ''DEF''', @WhereCondition = 'FirstName = @FirstName OR LastName = @LastName OR MiddleName = @MiddleName'
是否有任何方法可以做到這一點?因爲搜索條件將是動態的。請給出您的評論或給我使用sp_executesql
動態數量的參數的替代解決方案。使用帶動態參數的sp_executesql
在此先感謝。
爲什麼不使用視圖的過程?這似乎只會使過濾沒有任何好處變得更加複雜。 – adrianm
@adrianm我沒有明白你的觀點。因爲用於搜索條件的列將是動態的。我不知道如何使用視圖來實現這一點。 – Vignesh
'@ ParameterListWithDataType'的'Nvarchar'。正常的解決方案是:靜態SQL,可選謂詞和'選項(重新編譯)'。 –