매개 변수 바인딩

SQL 문을 실행하려면 먼저 SQL 문의 각 매개 변수 표식을 응용 프로그램의 변수에 연결하거나 바인딩해야 합니다. 이 작업은 SQLBindParameter 함수를 호출하여 수행할 수 있습니다. SQLBindParameter는 드라이버에 사용되는 프로그램 변수(주소, C 데이터 형식 등)에 대해 설명합니다. 또한 매개 변수 표식의 서수 값을 나타낸 후 해당 표식이 나타내는 SQL 개체의 특성(SQL 데이터 형식, 전체 자릿수 등)을 설명하여 매개 변수 표식을 식별합니다.

문을 실행하기 전이라면 언제라도 매개 변수 표식을 바인딩하거나 다시 바인딩할 수 있습니다. 매개 변수 바인딩은 다음 호출 중 하나가 발생하기 전까지 계속 유지됩니다.

  • 문 핸들에 바인딩된 모든 매개 변수를 해제하도록 Option 매개 변수를 SQL_RESET_PARAMS로 설정한 상태로 SQLFreeStmt 호출

  • 이전 바인딩을 자동으로 해제하도록 ParameterNumber를 바인딩된 매개 변수 표식의 서수로 설정한 상태로 SQLBindParameter 호출

응용 프로그램에서 매개 변수를 프로그램 변수의 배열에 바인딩하여 SQL 문을 일괄 처리할 수도 있습니다. 배열 바인딩에는 다음과 같은 두 가지 유형이 있습니다.

  • 열 단위 바인딩은 각 매개 변수가 고유한 변수 배열에 바인딩될 때 발생합니다.

    열 단위 바인딩은 Attribute를 SQL_ATTR_PARAM_BIND_TYPE으로 설정하고 ValuePtr을 SQL_PARAM_BIND_BY_COLUMN으로 설정한 상태로 SQLSetStmtAttr을 호출하여 지정합니다.

  • 행 단위 바인딩은 SQL 문의 모든 매개 변수가 매개 변수의 개별 변수를 포함하는 구조체 배열에 하나의 단위로 바인딩될 때 발생합니다.

    행 단위 바인딩은 Attribute를 SQL_ATTR_PARAM_BIND_TYPE으로 설정하고 ValuePtr을 프로그램 변수를 유지하는 구조체의 크기로 설정한 상태로 SQLSetStmtAttr을 호출하여 지정합니다.

SQL Server Native Client ODBC 드라이버는 서버로 문자나 이진 문자열 매개 변수를 보낼 때 SQLBindParameter ColumnSize 매개 변수에 지정된 길이까지 값을 채웁니다. ODBC 2.x 응용 프로그램이 ColumnSize에 0을 지정한 경우 드라이버는 매개 변수 값을 데이터 형식의 전체 자릿수까지 채웁니다. 전체 자릿수는 SQL Server 서버에 연결할 경우 8000이고 이전 버전의 SQL Server에 연결할 경우 255입니다. variant 열의 경우 ColumnSize는 바이트 단위입니다.

SQL Server는 저장 프로시저 매개 변수의 이름 정의를 지원합니다. ODBC 3.5에는 SQL Server 저장 프로시저를 호출할 때 사용되는 명명된 매개 변수에 대한 지원이 도입되었습니다. 이 지원을 통해 다음을 수행할 수 있습니다.

  • 저장 프로시저를 호출하고 저장 프로시저에 대해 정의된 매개 변수의 하위 집합에 대한 값을 제공할 수 있습니다.

  • 저장 프로시저를 만들 때 지정한 것과 다른 순서로 응용 프로그램에서 매개 변수를 지정할 수 있습니다.

Transact-SQL EXECUTE 문이나 ODBC CALL 이스케이프 시퀀스를 사용하여 저장 프로시저를 실행할 경우에만 명명된 매개 변수를 사용할 수 있습니다.

저장 프로시저에 SQL_DESC_NAME을 설정할 경우 쿼리의 모든 저장 프로시저 또한 SQL_DESC_NAME을 설정해야 합니다  저장 프로시저 호출에 리터럴이 사용될 경우 매개 변수에 SQL_DESC_NAME이 설정되면 리터럴에서 'name=value' 형식을 사용해야 하며 여기서 name은 저장 프로시저 매개 변수 이름(예: @p1)입니다. 자세한 내용은 이름을 사용하여 매개 변수 바인딩(명명된 매개 변수)(Binding Parameters by Name (Named Parameters))을 참조하십시오.

참고 항목

개념

문 매개 변수 사용