【发布时间】:2018-07-03 08:43:46
【问题描述】:
我有以下代码:
SqlParameter invidParam = new SqlParameter("@invid",obj.INVID);
SqlParameter prodParam = new SqlParameter("@prod", obj.PROD);
SqlParameter descrParam = new SqlParameter("@descr", obj.DESCR);
SqlParameter qtyParam = new SqlParameter("@qty", 1);
if(SessionHelper.TryGetSession("curUser",out User user))
{
SqlParameter useridParamCheck = new SqlParameter("@userid", user.Username);
var queryResult = db.Database.SqlQuery<int>("EXEC CheckIfAlreadyInPR#invid#userid @invid, @userid", invidParam, useridParamCheck);
var qty = queryResult.FirstOrDefault();
if (qty == 0)
{
SqlParameter useridParamInsert = new SqlParameter("@userid", user.Username);
var insertResult = db.Database.ExecuteSqlCommand("InsertIntoPR @invid, @prod, @descr, @userid, @qty", invidParam, prodParam, descrParam, useridParamInsert, qtyParam);
}
else if (qty > 0)
{
SqlParameter qtyParameter = new SqlParameter("@newqty", (qty + 1));
SqlParameter userIdParamUpdate = new SqlParameter("@userid", user.Username);
var updateResult = db.Database.ExecuteSqlCommand("UpdatePRQty#invid#userid#newqty @invid,@userid,@newqty",invidParam,userIdParamUpdate,qtyParameter);
}
}
我的程序运行并在var insertResult = db... 行遇到异常
我试图了解哪个 SqlParameter 已包含在另一个集合中。是不是因为前面的存储过程调用中已经使用了参数@userid?
我用不同的变量名声明了SqlParameter("@userid") 3 次:
useridParamCheck, useridParamInsert, userIdParamUpdate
这是否因为使用了名称 @userid 而导致错误?如果我使用@userid1、@userid2、@userid3 会解决问题吗?还是已经包含的SqlParameter 是我在上面声明的其他一些SQL 参数?
谢谢
【问题讨论】:
-
您不能将
SqlParamater的同一个实例用于两个不同的 sql 命令。例如在invidParam
标签: c# asp.net sql-server stored-procedures