바인딩 매개 변수 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를 호출하여 모든 이전 매개 변수를 바인딩한 다음 새 매개 변수를 바인딩해야 합니다.
이 섹션에서는 다음 항목을 다룹니다.