다음을 통해 공유


바인딩 매개 변수 ODBC

SQL 문의 각 매개 변수는 문이 실행되기 전에 애플리케이션의 변수에 연결되거나 바인딩 되어야 합니다. 애플리케이션이 변수를 매개 변수에 바인딩할 때 해당 변수(주소, C 데이터 형식 등)를 드라이버에 설명합니다. 또한 매개 변수 자체(SQL 데이터 형식, 정밀도 등)를 설명합니다. 드라이버는 이 정보를 해당 문에 대해 기본 있는 구조에 저장하고 해당 정보를 사용하여 문이 실행될 때 변수에서 값을 검색합니다.

문이 실행되기 전에 언제든지 매개 변수를 바인딩하거나 다시 설정할 수 있습니다. 문이 실행된 후 매개 변수가 다시 실행되면 문이 다시 실행될 때까지 바인딩이 적용되지 않습니다. 다른 변수에 매개 변수를 바인딩하기 위해 애플리케이션은 매개 변수를 새 변수로 다시 바인딩하기만 하면 됩니다. 이전 바인딩이 자동으로 해제됩니다.

변수는 SQL_RESET_PARAMS 옵션을 사용하여 SQLFreeStmt를 호출하여 모든 매개 변수가 바인딩되지 않거나 문이 해제될 때까지 다른 변수가 매개 변수에 바인딩될 때까지 매개 변수에기본 다시 바인딩됩니다. 이러한 이유로 애플리케이션은 변수가 바인딩 해제될 때까지 해제되지 않도록 해야 합니다. 자세한 내용은 버퍼 할당 및 해제를 참조 하세요.

매개 변수 바인딩은 문에 대한 드라이버가 기본 구조에 저장된 정보일 뿐이므로 어떤 순서로든 설정할 수 있습니다. 또한 실행되는 SQL 문과는 독립적입니다. 예를 들어 애플리케이션이 세 개의 매개 변수를 바인딩한 다음 다음 SQL 문을 실행한다고 가정합니다.

INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)  

애플리케이션이 SQL 문을 즉시 실행하는 경우

SELECT * FROM Orders WHERE OrderID = ?, OpenDate = ?, Status = ?  

동일한 문 핸들에서 INSERT 문에 대한 매개 변수 바인딩은 문 구조에 저장된 바인딩이므로 사용됩니다. 대부분의 경우 이는 잘못된 프로그래밍 방식이므로 피해야 합니다. 대신 애플리케이션은 SQL_RESET_PARAMS 옵션을 사용하여 SQLFreeStmt를 호출하여 모든 이전 매개 변수를 바인딩한 다음 새 매개 변수를 바인딩해야 합니다.

이 섹션에서는 다음 항목을 다룹니다.