1:如果 参数 是int 类型 : declare @a xml set @a=' rowid1/id/row rowid5/id/row rowid4/id/row rowid3/id/row rowid2/id/row' select * from product where id in ( select d.x.value('./id[1]','int') from @a.nodes('/*') as d(x)) 2:如果 参数 是var
1:如果参数是int类型:
declare @a xml
set @a='
1
5
4
3
2'
select * from product where id in (
select d.x.value('./id[1]','int') from @a.nodes('/*') as d(x))
2:如果参数是varchar类型:
declare @a xml
set @a='
a
b5
c4
d3
e2'
select * from product where pname in (
select d.x.value('./name[1]','varchar(100)') from @a.nodes('/*') as d(x))
以第一个为例写的c#简单方法
public dataset getdata(listint> idlist) { system.text.stringbuilder idxml = new system.text.stringbuilder(); // 把idlist转换成idxml(后面要用到的xml参数的值) foreach (var item in idlist) { idxml.appendformat({0},item); } system.text.stringbuilder strsql = new system.text.stringbuilder(); strsql.append(select * from product where id in (); // 解析xml参数@a 取出id 这里可以认为@a是一个特殊的表 strsql.append(select d.x.value('./id[1]','int') from @a.nodes('/*') as d(x)); strsql.append()); sqlconnection con = new sqlconnection(数据库连接字符串); sqlcommand cmd = new sqlcommand(strsql.tostring(), con); // 参数赋值 sqlparameter[] para = new sqlparameter[]{ new sqlparameter(@a,sqldbtype.xml){value= idxml.tostring()} }; cmd.parameters = para; // 查询 sqldataadapter sda = new sqldataadapter(cmd); dataset ds = new dataset(); sda.fill(ds); return ds; }
如果认为是好文的请不要吝啬您的推荐,写个文章不容易。