SQL SERVER 存储过程问题:VS2005+C#

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:29:46
如何在WHERE中使用“IN()”,()中是一些变量,而且变量的个数不定,需要从程序里传递,
如果是在C#中使用SQL语句,就可以用STRING 的 + 操作,
如:
STRING x = "zhangsan";
STRING y = "lisi"
STRING selectStr = “SELECT * FROM users WHERE name IN(”+ x +“,”+ y +“)”;
selectStr的值就是:
SELECT * FROM users WHERE name IN(zhangsan,lisi)
可是这样就无法使用存储过程了

上面举的例子只有两个参数,但实际情况是不知道有多少个参数,要看具体情况而定
希望有高手能指点一下

也可以像你所说的一样,将参数以字符串传给存储过程,在存储过程中组合查询语句,然后用execute()函数执行该语句。这样对参数数量不定的调用很方便。

存储过程如下:
create procedure test @paras varchar(1000)
as
declare @selectText varchar(1100)
select @selectText = 'SELECT * FROM users WHERE name IN(' + @paras + ')'

execute(@selectText)

在C#中调用该存储过程,并将前端的参数"'zhangsan','lisi'"传递给@paras.

使用Parameters参数
例如:SELECT * FROM users WHERE name IN (@x,@y)
Parameters("@x").Value =
关于Parameters的方法请参看相关资料