【问题标题】:EXEC sp_executesql with variable numbers of parameters具有可变数量参数的 EXEC sp_executesql
【发布时间】:2013-10-15 19:49:08
【问题描述】:

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

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

EXEC sp_executesql SqlString , ParamList, ???

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

【问题讨论】:

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


    【解决方案1】:

    使用列名、运算符和值填充表变量。然后你可以遍历它并构建一个 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 
    

    【讨论】:

    • 这是主要思想,但为了防止 sql 注入,我需要将值添加为参数,而不仅仅是将其与主字符串连接。如果我这样做,那么我需要向 Exec 命令添加参数...
    猜你喜欢
    • 2015-04-13
    • 1970-01-01
    • 2023-03-30
    • 2018-07-20
    • 2014-06-02
    • 1970-01-01
    • 2011-07-09
    • 2011-12-24
    • 1970-01-01
    相关资源
    最近更新 更多