是否可以在存储过程中构建动态where子句,以便在参数为空时,选择表中的所有项?但是,如果您有参数,则选择条件为真的项目?
答案 0 :(得分:2)
这是诀窍......你可以创建一个字符串查询 对于你的select命令,然后通过条件语句对它进行操作..请参阅下面的示例..希望你能在你的工作中应用逻辑。
-- Put a default value `NULL` to your parameter first
CREATE TABLE TableNameHere
(
@ParameterName VARCHAR(MAX) = NULL
)
DECLARE @SQLQuery VARCHAR(MAX)
--Initialize SQL statement first
--It will return true always , therefor it will display all data
SET @SQLQuery = 'SELECT * FROM TableNameHere WHERE 1 = 1'
-- If parameter has a value then do the where condition inside the block
IF @ParameterName IS NOT NULL
BEGIN
SET @SQLQuery = @SQLQuery + ' AND ColumnNameHere = ''' + @ParameterName + ''''
END
EXEC(@SQLQuery)