매개 변수 표식(데이터베이스 엔진)

매개 변수 표식은 ADO, OLE DB 및 ODBC 기반 데이터베이스 API에서 지원됩니다. 매개 변수 표식은 Transact-SQL 문에 있는 입력 식 또는 출력 식에 있는 물음표(?)입니다. 매개 변수 표식을 사용하면 응용 프로그램은 동일한 Transact-SQL 문을 서로 다른 입/출력 식 값으로 여러 번 실행하는 작업을 최적화할 수 있습니다.

예를 들어 사용자가 응용 프로그램에 5개의 서로 다른 주식 기호를 제공한 경우 응용 프로그램은 각 주식의 현재 데이터를 가져오는 저장 프로시저를 호출해야 합니다. 응용 프로그램에서 다음을 수행할 수 있습니다.

  • 다음 Transact-SQL 문을 준비합니다.

    EXEC GetQuoteProcedure @StockSymbolParameter = ?
    
  • 응용 프로그램 변수를 매개 변수 표식(?)에 바인딩합니다.

  • 루프를 실행합니다.

    1. 다음 주식 기호를 바인딩된 변수로 이동합니다.
    2. 해당 주식의 시세를 검색하는 문을 실행합니다.

매개 변수 표식은 저장 프로시저 매개 변수에 매핑되도록 제한되지 않습니다. 입력 식이 사용되는 곳이면 어디에서든 매개 변수 표식을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

UPDATE HumanResources.Employees
SET Title = ?
WHERE EmployeeID = ?

또한 매개 변수 표식은 저장 프로시저 출력 매개 변수와 반환 코드를 매핑하는 데 사용될 수 있습니다. 응용 프로그램이 저장 프로시저를 실행하면 OLE DB 공급자 또는 ODBC 드라이버는 출력 매개 변수나 반환 코드의 데이터 값을 매개 변수 표식에 바인딩된 변수로 이동합니다.

예를 들어 응용 프로그램에서 다음 프로시저를 실행할 수 있습니다. 이 프로시저는 정수 반환 코드와 문자 출력 매개 변수를 반환합니다.

  1. 다음 문을 준비합니다.

    {? = CALL MyProc (?)}
    
  2. 첫 번째 매개 변수 표식을 정수 변수에 바인딩하고 두 번째 표식을 문자 배열에 바인딩합니다.

  3. 해당 문을 실행합니다.

  4. 저장 프로시저에서 반환된 모든 결과 집합을 인출하거나 취소합니다.

이때 SQL Server용 Microsoft OLE DB 공급자 또는 SQL Server ODBC 드라이버는 반환 코드와 출력 매개 변수 값을 바인딩된 변수에 넣습니다. Microsoft SQL Server 2005에서는 출력 매개 변수와 반환 코드 값을 클라이언트에 반환하는 마지막 패킷에 넣어 반환합니다. 그러므로 응용 프로그램은 반환 코드 및 출력 매개 변수 값에 액세스하기 전에 저장 프로시저에서 반환된 모든 결과 집합을 처리하거나 취소해야 합니다.

ADO API에서 저장 프로시저를 실행할 때는 이 프로세스가 약간 달라집니다. ADO 응용 프로그램은 다음을 수행합니다.

  1. Command 개체 유형을 adCmdStoredProc으로 설정합니다.
  2. 명령 텍스트를 프로시저 이름으로 설정합니다.
  3. 모든 매개 변수와 반환 코드를 응용 프로그램 변수에 바인딩하는 Parameters 컬렉션을 작성합니다.
  4. Command 개체를 실행합니다.

매개 변수 표식은 특정 데이터 형식의 데이터베이스 개체와 연관되어 있습니다. 응용 프로그램이 매개 변수 표식을 연결된 데이터베이스 개체와 다른 데이터 형식의 변수에 바인딩하면 OLE DB 공급자 또는 ODBC 드라이버는 데이터를 변환해야 합니다. 예를 들어 응용 프로그램이 정수 반환 코드를 문자 배열에 바인딩할 경우 OLE DB 공급자 또는 ODBC 드라이버는 반환 코드 정수 데이터를 문자열로 변환해야 합니다. 지원되는 데이터 형식 변환에 대한 내용은 SQL Server용 OLE DB 공급자 및 SQL Server ODBC 드라이버의 설명서를 참조하십시오.

참고 항목

관련 자료

Running Stored Procedures (OLE DB)
Command Parameters
Using Statement Parameters

도움말 및 정보

SQL Server 2005 지원 받기