다음을 통해 공유


바인딩 매개 변수 표식

애플리케이션은 SQLBindParameter를 호출 하여 매개 변수를 바인딩합니다. SQLBindParameter 는 한 번에 하나의 매개 변수를 바인딩합니다. 이를 통해 애플리케이션은 다음을 지정합니다.

  • 매개 변수 번호입니다. 매개 변수는 숫자 1부터 시작하여 SQL 문에서 증가하는 매개 변수 순서로 번호가 매겨집니다. SQL 문의 매개 변수 수보다 큰 매개 변수 번호를 지정하는 것은 합법적이지만 문이 실행될 때 매개 변수 값은 무시됩니다.

  • 매개 변수 형식(입력, 입력/출력 또는 출력)입니다. 프로시저 호출의 매개 변수를 제외하고 모든 매개 변수는 입력 매개 변수입니다. 자세한 내용은 이 섹션의 뒷부분에 있는 프로시저 매개 변수를 참조하세요.

  • 매개 변수에 바인딩된 변수의 C 데이터 형식, 주소 및 바이트 길이입니다. 드라이버는 C 데이터 형식에서 SQL 데이터 형식으로 데이터를 변환할 수 있어야 합니다. 그렇지 않은 경우 오류가 반환됩니다. 지원되는 변환 목록은 부록 D: 데이터 형식에서 C에서 SQL 데이터 형식으로 데이터 변환을 참조하세요.

  • 매개 변수 자체의 SQL 데이터 형식, 정밀도 및 소수 자릿수입니다.

  • 길이/표시기 버퍼의 주소입니다. 이진 또는 문자 데이터의 바이트 길이를 제공하거나, 데이터가 NULL임을 지정하거나, SQLPutData를 사용하여 데이터를 보내게 지정합니다. 자세한 내용은 길이/표시기 값 사용을 참조 하세요.

예를 들어 다음 코드는 SalesPersonCustID를 SalesPerson 및 CustID 열의 매개 변수에 바인딩합니다. SalesPerson은 가변 길이인 문자 데이터를 포함하므로 코드는 SalesPerson(11)의 바이트 길이를 지정하고 SalesPersonLenOrInd에 SalesPerson에서 데이터의 바이트 길이를 포함하도록 바인딩합니다. 이 정보는 정수 데이터(고정 길이)를 포함하므로 CustID에 필요하지 않습니다.

SQLCHAR       SalesPerson[11];  
SQLINTEGER    SalesPersonLenOrInd, CustIDInd;  
SQLUINTEGER   CustID;  
  
// Bind SalesPerson to the parameter for the SalesPerson column and  
// CustID to the parameter for the CustID column.  
SQLBindParameter(hstmt1, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 10, 0,  
                  SalesPerson, sizeof(SalesPerson), &SalesPersonLenOrInd);  
SQLBindParameter(hstmt1, 2, SQL_PARAM_INPUT, SQL_C_ULONG, SQL_INTEGER, 10, 0,  
                  &CustID, 0, &CustIDInd);  
  
// Set values of salesperson and customer ID and length/indicators.  
strcpy_s((char*)SalesPerson, _countof(SalesPerson), "Garcia");  
SalesPersonLenOrInd = SQL_NTS;  
CustID = 1331;  
CustIDInd = 0;  
  
// Execute a statement to get data for all orders made to the specified  
// customer by the specified salesperson.  
SQLExecDirect(hstmt1,"SELECT * FROM Orders WHERE SalesPerson=? AND CustID=?",SQL_NTS);  

SQLBindParameter가 호출되면 드라이버는 이 정보를 문의 구조에 저장합니다. 문이 실행되면 이 정보를 사용하여 매개 변수 데이터를 검색하고 데이터 원본으로 보냅니다.

참고 항목

ODBC 1.0에서 매개 변수는 SQLSetParam으로 바인딩되었습니다. 드라이버 관리자는 애플리케이션 및 드라이버에서 사용하는 ODBC 버전에 따라 SQLSetParamSQLBindParameter 간의 호출을 매핑합니다.