결과 처리(ODBC)

적용 대상: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

애플리케이션이 SQL 문을 제출한 후 SQL Server 결과 데이터를 하나 이상의 결과 집합으로 반환합니다. 결과 집합은 쿼리 조건과 일치하는 행과 열 집합입니다. SELECT 문, 카탈로그 함수 및 일부 저장 프로시저는 애플리케이션에서 사용할 수 있는 결과 집합을 테이블 형식으로 생성합니다. 실행한 SQL 문이 저장 프로시저, 여러 명령이 포함된 일괄 처리 또는 키워드가 포함된 SELECT 문이면 처리할 결과 집합이 여러 개가 됩니다.

또한 ODBC 카탈로그 함수는 데이터를 검색할 수 있습니다. 예를 들어 SQLColumns는 데이터 원본의 열에 대한 데이터를 검색합니다. 이러한 결과 집합에는 0개 이상의 행이 포함될 수 있습니다.

GRANT 또는 REVOKE와 같은 다른 SQL 문은 결과 집합을 반환하지 않습니다. 이러한 문의 경우 SQLExecute 또는 SQLExecDirect 의 반환 코드는 일반적으로 문이 성공한 유일한 표시입니다.

각 INSERT, UPDATE 및 DELETE 문은 수정 내용이 적용되는 행 수만 포함된 결과 집합을 반환합니다. 이 개수는 애플리케이션이 SQLRowCount를 호출할 때 사용할 수 있습니다. ODBC 3. x 애플리케이션은 결과 집합을 검색하기 위해 SQLRowCount 를 호출하거나 SQLMoreResults 를 호출하여 취소해야 합니다. 애플리케이션이 여러 INSERT, UPDATE 또는 DELETE 문을 포함하는 일괄 처리 또는 저장 프로시저를 실행하는 경우 각 수정 문의 결과 집합은 SQLRowCount 를 사용하여 처리하거나 SQLMoreResults를 사용하여 취소해야 합니다. 일괄 처리나 저장 프로시저에 SET NOCOUNT ON 문을 포함하여 이 개수를 취소할 수 있습니다.

Transact-SQL에는 SET NOCOUNT 문이 포함되어 있습니다. NOCOUNT 옵션을 설정하면 SQL Server 문의 영향을 받는 행 수를 반환하지 않고 SQLRowCount는 0을 반환합니다. SQL Server Native Client ODBC 드라이버 버전에는 NOCOUNT 옵션이 켜져 있는지 여부를 보고하는 드라이버별 SQLGetStmtAttr 옵션(SQL_SOPT_SS_NOCOUNT_STATUS)이 도입되었습니다. SQLRowCount가 0을 반환할 때마다 애플리케이션은 SQL_SOPT_SS_NOCOUNT_STATUS 테스트해야 합니다. SQL_NC_ON 반환되는 경우 SQLRowCount의 값 0은 SQL Server 행 수를 반환하지 않았다는 것만 나타냅니다. SQL_NC_OFF 반환되면 NOCOUNT가 꺼져 있고 SQLRowCount 의 값 0은 문이 행에 영향을 주지 않았음을 나타냅니다. SQL_SOPT_SS_NOCOUNT_STATUS SQL_NC_OFF 경우 애플리케이션에서 SQLRowCount 값을 표시해서는 안 됩니다. 큰 일괄 처리나 저장 프로시저에는 여러 개의 SET NOCOUNT 문이 포함될 수 있으므로 프로그래머는 SQL_SOPT_SS_NOCOUNT_STATUS가 일정하게 유지된다고 가정할 수 없습니다. SQLRowCount가 0을 반환할 때마다 옵션을 테스트해야 합니다.

다른 몇 개의 Transact-SQL 문은 데이터를 결과 집합이 아닌 메시지로 반환합니다. SQL Server Native Client ODBC 드라이버는 이러한 메시지를 수신하면 SQL_SUCCESS_WITH_INFO 반환하여 애플리케이션에 정보 메시지를 사용할 수 있음을 알릴 수 있습니다. 그런 다음, 애플리케이션은 SQLGetDiagRec 를 호출하여 이러한 메시지를 검색할 수 있습니다. 이러한 방식으로 작동하는 Transact-SQL 문은 다음과 같습니다.

  • DBCC

  • SET SHOWPLAN(이전 버전의 SQL Server에서 사용 가능)

  • SET STATISTICS

  • PRINT

  • RAISERROR

SQL Server Native Client ODBC 드라이버는 심각도가 11 이상인 RAISERROR에서 SQL_ERROR 반환합니다. RAISERROR의 심각도가 19이면 연결도 삭제됩니다.

SQL 문의 결과 집합을 처리하기 위해 애플리케이션은 다음 작업을 수행합니다.

  • 결과 집합의 특징을 확인합니다.

  • 열을 프로그램 변수에 바인딩합니다.

  • 단일 값, 전체 행의 값 또는 여러 행의 값을 검색합니다.

  • 테스트를 통해 추가 결과 집합이 있는지 확인하고, 있는 경우 루프백하여 새 결과 집합의 특징을 확인합니다.

데이터 원본에서 행을 검색하고 애플리케이션에 반환하는 프로세스를 인출이라고 합니다.

섹션 내용

참고 항목

SQL Server Native Client(ODBC)
결과 처리 방법 도움말 항목(ODBC)