【发布时间】:2013-02-26 06:27:19
【问题描述】:
我有一个存储过程,它具有使用“IN”关键字的 where 条件。所以我想向存储过程发送多个值。
这是我的存储过程:
ALTER PROCEDURE [dbo].[xxx]
@COM_KEY varchar(max) = NULL
AS
BEGIN
SELECT
UserName, UserId
FROM
company
WHERE
(COM_KEY IN (@COM_KEY))
END
所以我在这里传递值
string companyID = "";
for (int i = 0; i < lbCompanies.Items.Count; i++)
{
if (i == 0)
{
companyID += Convert.ToInt32(lbCompanies.Items[i].Value);
}
else
{
companyID += "," + Convert.ToInt32(lbCompanies.Items[i].Value);
}
}
DataSet ApproveList = DataRepository.TUsersProvider.xxx(companyID);
但是有错误
将 varchar 值 '3087,4058' 转换为数据类型 int 时转换失败
我该如何解决?
【问题讨论】:
-
您使用的是哪个 DBMS?乍一看,问题似乎是您将 varchar 传递给查询需要 int 列表的 in 子句。
-
为了确认,
IN语句时出现该错误? -
IN的格式是IN ('something', 'something else')而不是IN ('something, something else')更不是这样,请参阅我的答案。 -
检查我的答案,它会为你工作。