결과 집합이 생성되었나요?

대부분의 경우 애플리케이션 프로그래머는 애플리케이션이 실행하는 문이 결과 집합을 만들지 여부를 알고 있습니다. 애플리케이션에서 프로그래머가 작성한 하드 코딩된 SQL 문을 사용하는 경우입니다. 일반적으로 애플리케이션이 런타임에 SQL 문을 생성하는 경우입니다. 프로그래머가 SELECT 문 또는 INSERT 문이 생성되고 있는지 여부를 플래그 지정하는 코드를 쉽게 포함할 수 있습니다. 프로그래머가 문에서 결과 집합을 만들지 여부를 알 수 없는 경우도 있습니다. 애플리케이션에서 사용자가 SQL 문을 입력하고 실행할 수 있는 방법을 제공하는 경우에도 마찬가지입니다. 애플리케이션이 프로시저를 실행하기 위해 런타임에 문을 생성하는 경우에도 마찬가지입니다.

이러한 경우 애플리케이션은 SQLNumResultCols를 호출하여 결과 집합의 열 수를 확인합니다. 이 값이 0이면 문에서 결과 집합을 만들지 않았습니다. 다른 숫자가면 문에서 결과 집합을 만들었습니다.

애플리케이션은 문이 준비되거나 실행된 후 언제든지 SQLNumResultCols를 호출할 수 있습니다. 그러나 일부 데이터 원본은 준비된 문으로 생성되는 결과 집합을 쉽게 설명할 수 없으므로 문이 준비되었지만 실행되기 전에 SQLNumResultCols가 호출되면 성능이 저하됩니다.

일부 데이터 원본은 SQL 문이 결과 집합에서 반환하는 행 수를 결정하는 것도 지원합니다. 이를 위해 애플리케이션은 SQLRowCount를 호출 합니다. SQLGetInfo 호출에 의해 반환된 SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 또는 SQL_STATIC_CURSOR_ATTRIBUTES2 옵션(커서 유형에 따라 다름)의 설정으로 행 수가 나타내는 것을 정확하게 나타냅니다. 이 비트 마스크는 반환된 행 수가 정확하거나 근사치인지 또는 전혀 사용할 수 없는지 여부를 각 커서 형식에 대해 나타냅니다. 정적 또는 키 집합 기반 커서의 행 개수가 SQLBulkOperations 또는 SQLSetPos를 통해 수행된 변경 내용의 영향을 받거나 위치가 지정된 업데이트 또는 삭제 문의 영향을 받는지 여부는 이전에 나열된 동일한 옵션 인수에서 반환된 다른 비트에 따라 달라집니다. 자세한 내용은 SQLGetInfo 함수 설명을 참조하세요.