2

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

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

EXEC sp_executesql SqlString , ParamList, ???

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

4

1 回答 1

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 
于 2013-10-15T21:05:49.247 回答