여러 결과

결과는 문이 실행된 후 데이터 원본에서 반환되는 것입니다. ODBC에는 결과 집합과 행 수의 두 가지 유형의 결과가 있습니다. 행 수는 업데이트, 삭제 또는 삽입 문의 영향을 받는 행 수입니다. SQL 문의 일괄 처리에 설명된 일괄 처리는 여러 결과를 생성할 수 있습니다.

다음 표에서는 애플리케이션이 데이터 원본이 서로 다른 각 일괄 처리 유형에 대해 여러 결과를 반환하는지 여부를 결정하는 데 사용하는 SQLGetInfo 옵션을 나열합니다. 특히 데이터 원본은 전체 문 일괄 처리에 대한 단일 행 개수 또는 일괄 처리의 각 문에 대한 개별 행 수를 반환할 수 있습니다. 매개 변수 배열로 실행된 결과 집합 생성 문의 경우 데이터 원본은 각 매개 변수 집합에 대한 모든 매개 변수 집합 또는 개별 결과 집합에 대해 단일 결과 집합을 반환할 수 있습니다.

일괄 처리 유형 행 수 결과 집합
명시적 일괄 처리 SQL_BATCH_ROW_COUNT[a] --[b]
절차 SQL_BATCH_ROW_COUNT[a] --[b]
매개 변수 배열 SQL_PARAM_ARRAYS_ROW_COUNTS SQL_PARAM_ARRAYS_SELECTS

[a] 일괄 처리의 행 개수 생성 문이 지원될 수 있지만 행 개수의 반환은 지원되지 않습니다. SQLGetInfoSQL_BATCH_SUPPORT 옵션은 행 개수 생성 문이 일괄 처리로 허용되는지 여부를 나타냅니다. SQL_BATCH_ROW_COUNTS 옵션은 이러한 행 수가 애플리케이션에 반환되는지 여부를 나타냅니다.

[b] 명시적 일괄 처리 및 프로시저는 여러 결과 집합 생성 문을 포함할 때 항상 여러 결과 집합을 반환합니다.

참고 항목

ODBC 1.0에 도입된 SQL_MULT_RESULT_SETS 옵션은 여러 결과 집합을 반환할 수 있는지 여부에 대한 일반적인 정보만 제공합니다. 특히 SQL_BS_SELECT_EXPLICIT 또는 SQL_BS_SELECT_PROC 비트가 SQL_BATCH_SUPPORT 대해 반환되거나 SQL_PARAM_ARRAYS_SELECT 대해 SQL_PAS_BATCH 반환되는 경우 "Y"로 설정됩니다.

여러 결과를 처리하기 위해 애플리케이션은 SQLMoreResults를 호출 합니다. 이 함수는 현재 결과를 카드 다음 결과를 사용할 수 있도록 합니다. 더 이상 결과를 사용할 수 없는 경우 SQL_NO_DATA 반환합니다. 예를 들어 다음 문이 일괄 처리로 실행되었다고 가정합니다.

SELECT * FROM Parts WHERE Price > 100.00;  
UPDATE Parts SET Price = 0.9 * Price WHERE Price > 100.00  

이러한 문이 실행되면 애플리케이션은 SELECT 문으로 만든 결과 집합에서 행을 가져옵니다. 행 가져오기가 완료되면 SQLMoreResults를 호출하여 가격이 책정된 부품 수를 사용할 수 있도록 합니다. 필요한 경우 SQLMoreResults는 카드 없는 행을 분리하고 커서를 닫습니다. 그런 다음, 애플리케이션은 SQLRowCount를 호출하여 UPDATE 문에 의해 얼마나 많은 부분이 회수되었는지 확인합니다.

결과를 사용할 수 있기 전에 전체 일괄 처리 문이 실행되는지 여부는 드라이버별로 다릅니다. 일부 구현에서는 다음과 같습니다. 다른 경우 SQLMoreResults를 호출하면 일괄 처리에서 다음 명령문의 실행이 트리거됩니다.

일괄 처리의 문 중 하나가 실패 하면 SQLMoreResults 는 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환합니다. 문이 실패하거나 실패한 문이 일괄 처리의 마지막 문일 때 일괄 처리 가 중단된 경우 SQLMoreResults 는 SQL_ERROR 반환합니다. 문이 실패하고 실패한 문이 일괄 처리의 마지막 문이 아닐 때 일괄 처리 가 중단되지 않은 경우 SQLMoreResults 는 SQL_SUCCESS_WITH_INFO 반환합니다. SQL_SUCCESS_WITH_INFO 하나 이상의 결과 집합 또는 개수가 생성되었으며 일괄 처리가 중단되지 않았다는 것을 나타냅니다.