mvc를 사용하여 웹 사이트를 구축하고 일련의 매개 변수가 포함 된 저장 프로 시저를 사용하여 일부 데이터를 저장하려고합니다. 이러한 매개 변수 중 일부를 선택적으로 설정할 수 있는지 궁금합니다. 그 이유는 계정으로 되돌아 오는 데이터가 달라지기 때문입니다. 사용자가 계정 유형 1을 편집하면 모든 매개 변수를 다시 전송해야합니다. 계정 유형 2를 편집하면 3 개의 매개 변수 만 다시 전송됩니다.저장 프로 시저의 선택적 매개 변수
SQL 매개 변수 : 프로 시저를 호출 컨트롤러
alter PROCEDURE web.Maint_UpdateClinic
@AccountID INT
,@IsActive BIT = 1
,@AccountName VARCHAR(100) = NULL
,@AccountAddress VARCHAR(100) = NULL
,@City VARCHAR(100) = NULL
,@State VARCHAR(2) = NULL
,@ZipCode VARCHAR(10) = NULL
,@PhoneNumber VARCHAR(20) = NULL
,@WebID INT
조치 : 매개 변수가 저장 프로 시저 선택하는 경우
using (OdbcConnection _conn = new OdbcConnection("FILEDSN=c:\\datasources\\RxCard.dsn"))
using (OdbcCommand cmd1 = new OdbcCommand())
{
cmd1.Connection = _conn;
cmd1.CommandText = "{call web.Maint_UpdateClinic(?,?,?,?,?,?,?,?,?)}";
cmd1.Parameters.AddWithValue("@AccountID", AccountID);
cmd1.Parameters.AddWithValue("@IsActive", true);
cmd1.Parameters.AddWithValue("@AccountName", AccountName);
cmd1.Parameters.AddWithValue("@Address", Address);
cmd1.Parameters.AddWithValue("@City", City);
cmd1.Parameters.AddWithValue("@State", State);
cmd1.Parameters.AddWithValue("@ZipCode", ZipCode);
cmd1.Parameters.AddWithValue("@PhoneNumber", PhoneNumber);
cmd1.Parameters.AddWithValue("@WebID", CookieStore.GetCookie("WebId"));
cmd1.CommandType = CommandType.StoredProcedure;
_conn.Open();
cmd1.ExecuteNonQuery();
_conn.Close();
}
'CommandType'이'StoredProcedure' 인 경우'CommandText'는 단지 SP의 이름이어야합니다. 그런 다음 원하는만큼 매개 변수를 추가 할 수 있습니다 (그러나 이름은 SP 이름과 일치해야 함). http://stackoverflow.com/a/7542564/123422 –
왜 Sql 클라이언트 클래스 대신 Odbc 클라이언트를 사용합니까? – Steve
모든 매개 변수를 필수 매개 변수로 전달하고 선택적 매개 변수를 null로 전달하는 것이 좋습니다. SP에서 어떤 매개 변수가 null이 아니며 테이블을 기반으로 업데이트하는지 확인하십시오. –