我遇到了一个错误没有意义的问题。即时窗口说该参数没有丢失,但调试器说它丢失了。 CP的任何人都没有这个答案。
错误:过程或函数'cpWeeklyPharmDataintDrvr'需要参数'@companyID',这是未提供的。
立即窗口:
cmd.Parameters["@companyID"].Value 1356
SqlCommand cmd = new SqlCommand("cpWeeklyPharmDataintDrvr", sqlC);
sqlC.Open();
cmd.Parameters.Add(new SqlParameter("@companyID", SqlDbType.Int)).Value = Master.CompanyId;
cmd.Parameters.Add(new SqlParameter("@sStartDate", SqlDbType.NVarChar, 30)).Value = Master.StartDate;
cmd.Parameters.Add(new SqlParameter("@sEndDate", SqlDbType.NVarChar, 30)).Value = Master.EndDate;
if (Master.RegionId > 0)
cmd.Parameters.Add(new SqlParameter("@region", SqlDbType.Int)).Value = Master.RegionId;
if (Master.DistrictId > 0)
cmd.Parameters.Add(new SqlParameter("@district", SqlDbType.Int)).Value = Master.DistrictId;
if (Master.StoreId . 0)
cmd.Parameters.Add(new SqlParameter("@store", SqlDbType.NVarChar)).Value = Master.StoreId.ToString();
SqlDataReader dR = cmd.ExecuteReader(); // This is where error occurs.
答案 0 :(得分:0)
if语句中包含add参数语句。如果if失败,则不执行任何操作,但过程将失败。添加一个抛出错误的else语句,或者将参数设置为默认值(如果不存在)。
还要检查Master.CompanyId是否为空。这可能会导致错误。最后,Add方法可能无法正常工作。
尝试AddWithValue。
答案 1 :(得分:0)
您是否尝试运行SQL事件探查器以查看传递给存储过程的参数是什么?你可以看到这些参数是否与你在数据库中的逻辑一起正确。 (你没有在问题中发帖)
此外,您还需要将commandtype指定为StoredProcedure。
答案 2 :(得分:0)
我可以观察两件事
CommandType的类型,将其设置为StoredProcedures
公司ID中的空值。
尝试传递一些硬编码值,看看是否有效。有时在null中它说同样的。并且在您的sp中将您的参数声明为@companyId int =null
,以便它也可以接受空值。