방법: 명령 개체의 매개 변수 설정 및 가져오기
명령 개체를 사용하여 데이터베이스에 명령을 실행하는 경우 실행하는 SQL 문 또는 저장 프로시저에 매개 변수가 필요할 수도 있습니다. 예를 들어, 다음은 매개 변수가 필요한 간단한 업데이트 문입니다.
UPDATE Employees
SET LastName = @LastName, FirstName = @FirstName, BirthDate = @BirthDate
WHERE (EmployeeID = @EmployeeID)
이 문을 실행할 때는 모든 매개 변수(@LastName, @FirstName, @BirthDate 및 @EmployeeID)에 값을 제공해야 합니다. 이 작업을 위해 매개 변수 개체를 사용합니다. 명령 개체는 형식이 SqlParameter, OleDbParameter, OdbcParameter 또는 OracleParameter인 개체 집합이 포함된 매개 변수 컬렉션(예: Parameters)을 지원합니다. 이 컬렉션에는 전달해야 할 각 매개 변수 당 하나씩의 매개 변수 개체가 들어 있습니다. 또한 저장 프로시저를 호출하는 경우에는 프로시저의 반환 값을 저장할 매개 변수도 필요합니다.
참고
데이터 집합을 사용하는 경우에는 대개 명령을 직접 실행하지 않고 TableAdapter 쿼리에 매개 변수를 전달합니다. 자세한 내용은 방법: 데이터 집합을 데이터로 채우기를 참조하십시오.
매개 변수 값 설정
명령을 실행하려면 먼저 명령의 각 매개 변수에 대한 값을 설정해야 합니다.
매개 변수 값을 설정하려면
명령의 매개 변수 컬렉션에 있는 각 매개 변수의 Value 속성을 설정합니다.
다음 예제에서는 명령을 실행하기 전에 저장 프로시저를 참조하는 매개 변수를 설정하는 방법을 보여 줍니다. 이 샘플에서는 매개 변수 컬렉션이 au_id, au_lname 및 au_fname이라는 매개 변수 세 개로 이미 구성되었다고 가정합니다. 이 예제에서는 설정하고 있는 매개 변수를 명확히 알 수 있도록 하기 위해 각 매개 변수를 이름으로 설정합니다.
With oleDbCommand1 .CommandText = "UpdateAuthor" .CommandType = System.Data.CommandType.StoredProcedure .Parameters("au_id").Value = "172-32-1176" .Parameters("au_lname").Value = "White" .Parameters("au_fname").Value = "Johnson" End With OleDbConnection1.Open() oleDbCommand1.ExecuteNonQuery() OleDbConnection1.Close()
oleDbCommand1.CommandText = "UpdateAuthor"; oleDbCommand1.CommandType = System.Data.CommandType.StoredProcedure; oleDbCommand1.Parameters["au_id"].Value = "172-32-1176"; oleDbCommand1.Parameters["au_lname"].Value = "White"; oleDbCommand1.Parameters["au_fname"].Value = "Johnson"; oleDbConnection1.Open(); oleDbCommand1.ExecuteNonQuery(); oleDbConnection1.Close();
반환 값 가져오기
저장 프로시저에서는 자신을 호출한 응용 프로그램에 값을 반환하기도 합니다.
프로시저에서 반환된 값을 가져오려면
Direction 속성이 Output으로 설정된 매개 변수를 만듭니다. 그러나 프로시저에서 매개 변수가 값을 전달하는 일과 받는 일에 모두 사용되는 경우에는 속성을 InputOutput으로 설정합니다. 매개 변수의 데이터 형식을 예상되는 반환 값의 데이터 형식과 같게 지정해야 합니다.
프로시저를 실행한 다음 반환되는 값을 받는 매개 변수의 Value 속성을 읽습니다.
프로시저의 반환 값을 가져오려면
Direction 속성이 ReturnValue로 설정된 매개 변수를 만듭니다.
참고
반환 값을 저장할 매개 변수 개체는 매개 변수 컬렉션에서 첫 번째 항목이어야 합니다.
매개 변수의 데이터 형식을 예상되는 반환 값의 데이터 형식과 같게 지정해야 합니다.
참고
Update, Insert, Delete 등의 SQL 문에서는 해당 문의 영향을 받은 레코드 수를 나타내는 정수 값이 반환됩니다. ExecuteNonQuery 메서드의 반환 값으로 이 값을 얻을 수 있습니다. 자세한 내용은 저장 프로시저로 데이터 수정(ADO.NET)을 참조하십시오.
다음 예제에서는 CountAuthors라는 저장 프로시저의 반환 값을 얻는 방법을 보여 줍니다. 여기서는 명령의 매개 변수 컬렉션에 있는 첫 번째 매개 변수의 이름이 "retvalue"이고 방향 속성이 ReturnValue로 설정되어 있는 것으로 가정합니다.
Dim returnValue As Integer
oleDbCommand1.CommandText = "CountAuthors"
oleDbCommand1.CommandType = CommandType.StoredProcedure
oleDbConnection1.Open()
oleDbCommand1.ExecuteNonQuery()
oleDbConnection1.Close()
returnValue = CType(oleDbCommand1.Parameters("retvalue").Value, Integer)
MessageBox.Show("Return Value = " & returnValue.ToString())
int returnValue;
oleDbCommand1.CommandText = "CountAuthors";
oleDbCommand1.CommandType = CommandType.StoredProcedure;
oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();
returnValue = (int)(oleDbCommand1.Parameters["retvalue"].Value);
MessageBox.Show("Return Value = " + returnValue.ToString());