读书人

关于SQL传参有关问题!在线急等!高分

发布时间: 2012-02-03 22:02:47 作者: rapoo

关于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]

[解决办法]
你可以考虑使用动态的SQL语句

CREATE PROCEDURE XXX
@IDs varchar(100)
AS
Declare @Sql varchar(8000)
set @Sql= select * from [user] where IDs in( '+ @IDs + ') '
exec sp_executesql @sql
GO

读书人网 >asp.net

热点推荐