애플리케이션은 원하는 대로 결과 집합의 열을 아무것도 바인딩하지 않거나, 원하는 개수만큼 바인딩할 수 있습니다. 데이터 행을 가져오면 드라이버는 바인딩된 열의 데이터를 애플리케이션에 반환합니다. 애플리케이션이 결과 집합의 모든 열을 바인딩하는지 여부는 애플리케이션에 따라 달라집니다. 예를 들어 보고서를 생성하는 애플리케이션은 일반적으로 고정된 형식을 갖습니다. 이러한 애플리케이션은 보고서에 사용되는 모든 열을 포함하는 결과 집합을 만든 다음 이러한 모든 열에 대한 데이터를 바인딩하고 검색합니다. 데이터로 가득 찬 화면을 표시하는 애플리케이션을 사용하면 사용자가 표시할 열을 결정할 수 있습니다. 이러한 애플리케이션은 사용자가 원하는 모든 열을 포함하는 결과 집합을 만들지만 사용자가 선택한 열에 대해서만 데이터를 바인딩하고 검색합니다.
SQLGetData를 호출하여 언바운드 열에서 데이터를 검색할 수 있습니다. 일반적으로 단일 버퍼의 길이를 초과하고 파트에서 검색해야 하는 긴 데이터를 검색하기 위해 호출됩니다.
행을 가져온 후에도 언제든지 열을 바인딩할 수 있습니다. 그러나 새 바인딩은 다음에 행을 가져올 때까지 적용되지 않습니다. 이미 가져온 행의 데이터에는 적용되지 않습니다.
변수는 다른 변수가 열에 바인딩될 때까지 열에 바인딩된 상태로 유지됩니다. 열은 null 포인터를 변수의 주소로 사용하여 SQLBindCol 을 호출하여 바인딩되지 않을 때까지, 모든 열은 SQL_UNBIND 옵션을 사용하여 SQLFreeStmt 를 호출하여 바인딩되지 않을 때까지 또는 문이 해제될 때까지 열에 바인딩됩니다. 이러한 이유로 애플리케이션은 바인딩된 변수가 있는 한 모든 바인딩된 변수가 유효한 상태로 유지되도록 해야 합니다. 자세한 내용은 버퍼 할당 및 해제를 참조하세요.
열 바인딩은 문 구조와 연결된 정보일 뿐이므로 순서에 따라 설정할 수 있습니다. 또한 결과 집합과 독립적입니다. 예를 들어 애플리케이션이 다음 SQL 문에 의해 생성된 결과 집합의 열을 바인딩한다고 가정합니다.
SELECT * FROM Orders
애플리케이션이 SQL 문을 실행하는 경우
SELECT * FROM Lines
동일한 문 핸들에서 첫 번째 결과 집합에 대한 열 바인딩은 문 구조에 저장된 바인딩이므로 계속 적용됩니다. 대부분의 경우 이는 잘못된 프로그래밍 방식이므로 피해야 합니다. 대신 애플리케이션은 SQL_UNBIND 옵션을 사용하여 SQLFreeStmt 를 호출하여 모든 이전 열의 바인딩을 해제한 다음 새 열을 바인딩해야 합니다.