EXEC sp_executesql,参数可变

时间:2013-10-15 19:49:08

标签: sql sql-server sql-server-2008 sp-executesql

我正在尝试实现用户可自定义的搜索,最后我到了SQL部分。用户可以选择可变数量的条件,并将所有内容以表值参数的形式发送到存储过程。我想出了如何创建sql字符串的逻辑,但我被困在我发送参数的部分。伪代码示例是:

foreach parameter in the table-valued parameter
   SqlString = SqlString + '@parameter'
   ParamList= ParamList + '@parameter'

EXEC sp_executesql SqlString , ParamList, ???

我的问题是如何设置参数,当我不知道它们有多少时?

1 个答案:

答案 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