C#.net 코드에서 null 변수를 SQL 저장 프로시저로 전달하는 방법
C#.net 코드 일부에서 SQL 저장 프로시저를 호출합니다.
SqlHelper.ExecuteDataset(sqlConnection, CommandType.StoredProcedure, STORED_PROC_NAME, sqlParameters);
어디서sqlParameters변수는 다음과 같이 정의됩니다.
SqlParameter[] sqlParameters = new SqlParameter[SQL_NUMBER_PARAMETERS];
Log.Logger.Debug(string.Format("Running proc: {0} ", STORED_PROC_NAME));
SqlParameters[0] = new SqlParameter("fieldID", SqlDbType.BigInt );
SqlParameters[0].Value = fieldID;
SqlParameters[0].Direction = ParameterDirection.Input;
이제 이 저장 프로시저에 다른 두 매개 변수를 전달해야 합니다(둘 다 유형입니다).SqlDateTime), 이 경우 NULL이 됩니다.
감사해요.
인
SqlParameters[1] = new SqlParameter("Date1", SqlDbType.SqlDateTime);
SqlParameters[1].Value = DBNull.Value;
SqlParameters[1].Direction = ParameterDirection.Input;
...그리고 두 번째를 위해 복사합니다.
사용하다DBNull.Value저장 프로시저 매개 변수의 기본값을 NULL로 설정하는 것이 좋습니다.또는 을 사용합니다.Nullable<DateTime>매개 변수가 때때로 유효한 DateTime 개체가 될 경우
당신은 통과할 수 있습니다.DBNull.Value파라미터의 값으로 이동합니다.값 속성:
SqlParameters[0] = new SqlParameter("LedgerID", SqlDbType.BigInt );
SqlParameters[0].Value = DBNull.Value;
두 개의 DateTime 매개 변수를 조정하기만 하면 됩니다. 물론 사용 방법을 보여줍니다.DBNull.Value여기에 자산 가치를 입력합니다.
마르크
오래된 질문이지만 nullable 매개 변수를 만드는 상당히 깨끗한 방법은 다음과 같습니다.
new SqlParameter("@note", (object) request.Body ?? DBNull.Value);
요청이 있으면.몸에는 가치가 있고, 그 가치가 사용됩니다.null이면 DbNull입니다.값이 사용됩니다.
null인 경우 DBNull로 변환하는 방법을 사용합니다.
// Converts to DBNull, if Null
public static object ToDBNull(object value)
{
if (null != value)
return value;
return DBNull.Value;
}
따라서 파라미터를 설정할 때 함수를 호출합니다.
sqlComm.Parameters.Add(new SqlParameter("@NoteNo", LibraryHelper.ToDBNull(NoteNo)));
이렇게 하면 모든 null이 DBNull로 변경됩니다.값, 그렇지 않으면 그대로 유지됩니다.
이것을 시도해 보세요! 구문은 줄이 없고 훨씬 더 압축적입니다! 이 접근법으로 추가할 속성을 추가하는 것을 잊지 마세요!
cmd.Parameters.Add(new SqlParameter{SqlValue=(object)username??DBNull.Value,ParameterName="user" } );
SQLParam = cmd.Parameters.Add("@RetailerID", SqlDbType.Int, 4)
If p_RetailerID.Length = 0 Or p_RetailerID = "0" Then
SQLParam.Value = DBNull.Value
Else
SQLParam.Value = p_RetailerID
End If
SQL 저장 프로시저에서 매개 변수의 이름이 "Id"이고 데이터베이스 저장 프로시저를 호출하는 데 사용하는 C# 함수가 유형의 이름이라고 가정합니다.int?따라서 다음과 같은 방법으로 문제를 해결할 수 있습니다.
public void storedProcedureName(Nullable<int> id, string name)
{
var idParameter = id.HasValue ?
new SqlParameter("Id", id) :
new SqlParameter { ParameterName = "Id", SqlDbType = SqlDbType.Int, Value = DBNull.Value };
// to be continued...
언급URL : https://stackoverflow.com/questions/1207404/how-to-pass-a-null-variable-to-a-sql-stored-procedure-from-c-net-code
'programing' 카테고리의 다른 글
| 원격 저장소의 특정 버전 GitClone (0) | 2023.06.21 |
|---|---|
| Git 하위 모듈의 추적되지 않은 상태를 제거하는 방법은 무엇입니까? (0) | 2023.06.21 |
| 오류 - 직렬화 가능으로 표시되지 않음 (0) | 2023.06.16 |
| SQL Server에는 패키지가 없기 때문에 프로그래머는 이를 피하기 위해 무엇을 합니까? (0) | 2023.06.16 |
| ORA-4031 "x바이트의 공유 메모리를 할당할 수 없음" 해결 (0) | 2023.06.16 |