[SQL] 어떻게 C # .NET 코드에서 저장 프로 시저는 SQL에 널 변수를 전달하는 방법
SQL어떻게 C # .NET 코드에서 저장 프로 시저는 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;
나는이 경우 NULL로 가고있다, (두 유형의 SqlDateTime의이다), 지금이 저장된 프로 시저에 다른 두 개의 매개 변수를 전달해야합니다.
감사,
에
해결법
-
==============================
1.
SqlParameters[1] = new SqlParameter("Date1", SqlDbType.SqlDateTime); SqlParameters[1].Value = DBNull.Value; SqlParameters[1].Direction = ParameterDirection.Input;
... 다음 두 번째에 대한 복사합니다.
-
==============================
2.사용 DBNull.Value 더 나은 아직, 당신의 저장 프로 시저 매개 변수가 NULL의 기본값을가합니다. 아니면 Null 허용을 사용하여 <날짜 시간> 매개 변수 매개 변수는 때때로 유효한 DateTime 개체 될 경우
사용 DBNull.Value 더 나은 아직, 당신의 저장 프로 시저 매개 변수가 NULL의 기본값을가합니다. 아니면 Null 허용을 사용하여 <날짜 시간> 매개 변수 매개 변수는 때때로 유효한 DateTime 개체 될 경우
-
==============================
3.당신은 매개 변수의 .Value 속성에 DBNull.Value를 전달할 수 있습니다 :
당신은 매개 변수의 .Value 속성에 DBNull.Value를 전달할 수 있습니다 :
SqlParameters[0] = new SqlParameter("LedgerID", SqlDbType.BigInt ); SqlParameters[0].Value = DBNull.Value;
그냥 분명, 당신이 개 날짜 시간 매개 변수를 조정 - 바로 여기에 DBNull.Value 속성 값을 사용하는 방법을 보여주는.
즙을 짜고 난 찌꺼기
-
==============================
4.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)));
이것은 다른 사람이 동일하게 유지됩니다, DBNull.Value로 변경 얻을, 어떤 null을 보장합니다.
-
==============================
5.여기에 오래된 질문 만은 널 (NULL) 매개 변수를 만들 수있는 매우 깨끗한 방법 :
여기에 오래된 질문 만은 널 (NULL) 매개 변수를 만들 수있는 매우 깨끗한 방법 :
new SqlParameter("@note", (object) request.Body ?? DBNull.Value);
request.Body에 값이있는 경우, 다음의 값이 사용됩니다. 그것은이 null의 경우, DbNull.Value가 사용됩니다.
-
==============================
6.이 시도! 구문 덜 라인과 더욱 컴팩트! 이 접근 방식을 추가 할 속성을 추가하는 것을 잊지 마세요!
이 시도! 구문 덜 라인과 더욱 컴팩트! 이 접근 방식을 추가 할 속성을 추가하는 것을 잊지 마세요!
cmd.Parameters.Add(new SqlParameter{SqlValue=(object)username??DBNull.Value,ParameterName="user" } );
-
==============================
7.
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
-
==============================
8.하자의 매개 변수의 이름이 SQL 저장 프로 시저에서 "이드"라고하고, C #을 기능을 사용하면 데이터베이스 저장 프로 시저가 int 형의 이름을 호출하는 데 사용하는? 다음은 문제를 해결할 수 있음을 감안할 때 :
하자의 매개 변수의 이름이 SQL 저장 프로 시저에서 "이드"라고하고, 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...
from https://stackoverflow.com/questions/1207404/how-to-pass-a-null-variable-to-a-sql-stored-procedure-from-c-net-code by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 쿼리에서 카운트를 캡처 (0) | 2020.06.05 |
---|---|
[SQL] MySQL은 트리거 - 변수에 SELECT 저장 (0) | 2020.06.05 |
[SQL] ORA-00972 너무 오래 별칭 열 이름 식별자 (0) | 2020.06.05 |
[SQL] SqlConnectionStringBuilder를 사용하여 연결 문자열에서 데이터베이스 이름을 얻는 방법 (0) | 2020.06.05 |
[SQL] 가입 INNER와 DELETE SQL은 (0) | 2020.06.05 |