SQL“SELECT IN(Value1,Value2 ...)”将值的值传递给GridView

时间:2008-12-05 01:30:59

标签: sql gridview select session-variables

使用SELECT..WHERE..<field> IN (value1, val2...)创建GridView时遇到了一个奇怪的问题。

在“配置数据源”选项卡中,如果我对值SELECT .... WHERE field1 in ('AAA', 'BBB', 'CCC')进行硬编码,则系统运行良好。

但是,如果我定义一个新参数并使用变量传入连接的值字符串;无论是@session,Control还是querystring;例如SELECT .... WHERE field1 in @SESSION结果始终为空。

我通过将参数内容减少到只有一个值来做另一个实验,效果很好。

简而言之, 如果我硬编码一串值,它可以工作, 如果我只传递一个单值的变量,它可以工作, 但是如果我传递一个带有两个值的变量;它失败了。

请告知我是否犯了任何错误,或者这是一个已知错误。

BR SDIGI

3 个答案:

答案 0 :(得分:3)

这很有效。不确定它的效率如何。

CREATE PROCEDURE [dbo].[get_bars_in_foo]
    @bars varchar(255)
AS
BEGIN
    DECLARE @query AS varchar(MAX)
    SET @query = 'SELECT * FROM [foo] WHERE bar IN (' + @bars + ')'
    exec(@query)
END

-- exec [get_bars_in_foo] '1,2,3,4'

答案 1 :(得分:1)

看看这个问题的答案(与你的问题非常相似)

Parameterize an SQL IN clause

最终将(通过复杂的路线)链接到这个明确的答案:

http://www.sommarskog.se/arrays-in-sql.html

答案 2 :(得分:0)

如果您继续使用存储过程,可以使用this method,我在SQL中讨论了如何使用它。