我正在尝试实现用户可自定义的搜索,最后我到了SQL部分。用户可以选择可变数量的条件,并将所有内容以表值参数的形式发送到存储过程。我想出了如何创建sql字符串的逻辑,但我被困在我发送参数的部分。伪代码示例是:
foreach parameter in the table-valued parameter
SqlString = SqlString + '@parameter'
ParamList= ParamList + '@parameter'
EXEC sp_executesql SqlString , ParamList, ???
我的问题是如何设置参数,当我不知道它们有多少时?
答案 0 :(得分:0)
使用“列名称”,“运算符”和“值”填充表变量。然后你可以遍历它并构建一个where子句。然后将where子句附加到sqlstring参数。
Declare @WhereClause varchar(max)
set @WhereClause = 'Where 1=1'
...然后循环通过表格......
Select @WhereClause = @WhereClause + ' and ' + ColumnName + ' ' + Operator + ' ' + Value
From @tableVariable
将where子句附加到select语句并执行
EXEC sp_executesql @SqlString + @WhereClause