日期:2014-05-19  浏览次数:20575 次

关于SQL传参问题!在线急等!高分发散!
我在data.xsd   中写一sql文中含有in   的语句,例如select   *   from   user   where  
user.id   in( '1 ', '2 ', '3 '),但现在是想把( "1 ", "2 ", "3 ")用参数传进去,而不是设成固定值。
我写成select   *   from   user   where     user.id   in(:id)
然后再传参数id的时候
其中id   为   dim   id   as   stirng   =   " '1 ', '2 ', '3 ' "  
但这样不行   传不进去,请问有没有什么样的办法解决!
不能用or   语句来代替!

------解决方案--------------------
dim id as stirng = "( '1 ', '2 ', '3 ') "

sql = "select * from user where user.id in " + id;
试试看

------解决方案--------------------
没有理解lz的意思

------解决方案--------------------
id 的值,是从哪里来的
------解决方案--------------------
传过来就是 ( "1 ", "2 ", "3 ") 这个形式吗。。2楼的方法难道不行???
------解决方案--------------------
declare @command varchar(200)
select @command = 'select * from user where user.id in( ' + @id + ') '
exec(@command)
------解决方案--------------------
/// <summary>
/// 合并字符串,构造成in字句的格式
/// </summary>
/// <param name= "keys "> </param>
/// <returns> </returns>
public static string UniteStringForIn(string[] keys)
{
if (keys == null)
return string.Empty;

StringBuilder sb = new StringBuilder();
for (int i = 0; i < keys.Length; i++)
{
sb.Append( " ' ");
sb.Append(keys[i]);
sb.Append( " ' ");

if (i < keys.Length - 1)
{
sb.Append( ", ");
}
}

return sb.ToString();
}
------解决方案--------------------
就是界面层传递一个字符串数组给业务层,然后业务层构造sql语句处理业务,没有问题呀
------解决方案--------------------
帮顶
------解决方案--------------------
不懂楼主想要干什么....
------解决方案--------------------
回复人:antoniusguo(anton) ( 四级(中级)) 信誉:100 2007-05-10 15:16:44 得分:0
?
declare @command varchar(200)
select @command = 'select * from user where user.id in( ' + @id + ') '
exec(@command)


这不就是楼主要的效果么....
------解决方案--------------------
创建一个临时表 Create table #temptab(****),select之前把所有的参数放进去,select 之后全部清除掉。
在DB2中有用户临时表,是在内存中创建的更加方便。
------解决方案--------------------
你试一下dim id as stirng = " ' ' '1 ' ', ' '2 ' ', ' '3 ' ' ' "

------解决方案--------------------
JF
------解决方案--------------------
select * from [user]