매개 변수를 전달하는 절차에서 사전 키인 @accountNumber가 누락되었다고 말합니다. 동일한 코드를 사용하는 두 가지 방법이 있습니다. 하나는 작동하지만 하나는 작동하지 않습니다. 두 절차 모두 같은 방식으로 선언 되었기 때문에 손실이 있습니다.
편집 : 내가 comm.CommandType = CommandType.StoredProcedure;
방법에서 빠진 것으로 밝혀졌습니다 .
순서:
CREATE PROCEDURE [dbo].[updateNumbers_StatementDB]
(
@accountNumber varchar(50),
@accountType char(4),
@padding varchar(50),
@proc_dateStart datetime,
@proc_dateEnd datetime
)
updateNumbers_StatementDB를 호출하는 메소드 :
using (SqlCommand comm = new SqlCommand("updateNumbers_StatementDB", osql))
{
strMsg = "Statement DB";
_newLog.LogIt(strMsg);
foreach (KeyValuePair<string, string> item in dt)
{ //problem parameter
var param = comm.Parameters.AddWithValue("@accountNumber", item.Key);
//item.key shows up in logging as 1020, what I set it as.
strMsg = "item key: " + item.Key;
_newLog.LogIt(strMsg);
var accountTypeParam = comm.Parameters.AddWithValue("@accountType", item.Value);
strMsg = "item value: " + item.Value;
_newLog.LogIt(strMsg);
var paddingParam = comm.Parameters.AddWithValue("@padding", padding);
var dateStartParam = comm.Parameters.AddWithValue("@proc_dateStart", startDate);
var dateEndParam = comm.Parameters.AddWithValue("@proc_dateEnd", endDate);
var reader = comm.ExecuteNonQuery(); //or NonQuery, etc.
strMsg = "Statement query executed at least once";
_newLog.LogIt(strMsg);
}
}
작동하는 다른 방법 추가 :
using (SqlCommand comm = new SqlCommand("updateNumbers_ArchiveDB", osql))
{
comm.CommandType = CommandType.StoredProcedure;
foreach (KeyValuePair<string, string> item in dt)
{
var param = comm.Parameters.AddWithValue("@accountNumber", item.Key);
strMsg = "item key: " + item.Key;
_newLog.LogIt(strMsg);
var accountTypeParam = comm.Parameters.AddWithValue("@accountType", item.Value);
strMsg = "item value: " + item.Value;
_newLog.LogIt(strMsg);
var paddingParam = comm.Parameters.AddWithValue("@padding", padding);
var dateStartParam = comm.Parameters.AddWithValue("@proc_dateStart", startDate);
var dateEndParam = comm.Parameters.AddWithValue("@proc_dateEnd", endDate);
strMsg = "Getting to the bottom of the foreach loop";
_newLog.LogIt(strMsg);
var reader = comm.ExecuteNonQuery(); //or NonQuery, etc.
strMsg = "Query executed at least once";
_newLog.LogIt(strMsg);
}
}
순서:
CREATE PROCEDURE [dbo].[updateNumbers_ArchiveDB]
(
@accountNumber varchar(50),
@accountType char(4),
@padding varchar(50),
@proc_dateStart datetime,
@proc_dateEnd datetime
)
일반적으로이 오류는 변수가 null 일 때 발생합니다. 그러나이 경우 내 로깅은 변수에 값이 있음을 보여줍니다. 내 절차가 가치를 인식하지 못하는 이유에 대한 아이디어가 있습니까?
comm.CommandType = CommandType.StoredProcedure;
첫 번째 방법에서 누락되었습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다