SQLRowCount 함수
규칙
버전 소개: ODBC 1.0 표준 준수: ISO 92
요약
SQLRowCount는 UPDATE, INSERT 또는 DELETE 문의 영향을 받는 행 수, SQLBulkOperations의 SQL_ADD, SQL_UPDATE_BY_BOOKMARK 또는 SQL_DELETE_BY_BOOKMARK 작업 또는 SQLSetPos의 SQL_UPDATE 또는 SQL_DELETE 작업을 반환합니다.
구문
SQLRETURN SQLRowCount(
SQLHSTMT StatementHandle,
SQLLEN * RowCountPtr);
인수
StatementHandle
[입력] 문 핸들입니다.
RowCountPtr
[출력] 행 수를 반환할 버퍼를 가리킵니다. UPDATE, INSERT 및 DELETE 문, SQLBulkOperations의 SQL_ADD, SQL_UPDATE_BY_BOOKMARK 및 SQL_DELETE_BY_BOOKMARK 작업 및 SQLSetPos의 SQL_UPDATE 또는 SQL_DELETE 작업의 경우 *RowCountPtr에서 반환되는 값은 요청의 영향을 받는 행 수이거나 영향을 받는 행 수를 사용할 수 없는 경우 -1입니다.
SQLExecute, SQLExecDirect, SQLBulkOperations, SQLSetPos 또는 SQLMoreResults가 호출되면 진단 데이터 구조의 SQL_DIAG_ROW_COUNT 필드가 행 수로 설정되고 행 수가 구현에 종속된 방식으로 캐시됩니다. SQLRowCount 는 캐시된 행 개수 값을 반환합니다. 캐시된 행 개수 값은 문 핸들이 준비되거나 할당된 상태로 다시 설정되거나 문이 다시 검사되거나 SQLCloseCursor 가 호출될 때까지 유효합니다. SQL_DIAG_ROW_COUNT 필드가 설정된 이후 함수가 호출된 경우 함수 호출에 의해 SQL_DIAG_ROW_COUNT 필드가 0으로 다시 설정되므로 SQLRowCount 에서 반환되는 값이 SQL_DIAG_ROW_COUNT 필드의 값과 다를 수 있습니다.
다른 문 및 함수의 경우 드라이버는 *RowCountPtr에서 반환된 값을 정의할 수 있습니다. 예를 들어 일부 데이터 원본은 행을 가져오기 전에 SELECT 문 또는 카탈로그 함수에서 반환하는 행 수를 반환할 수 있습니다.
참고 항목
많은 데이터 원본은 가져오기 전에 결과 집합의 행 수를 반환할 수 없습니다. 최대 상호 운용성을 위해 애플리케이션은 이 동작에 의존해서는 안 됩니다.
반품
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR 또는 SQL_INVALID_HANDLE.
진단
SQLRowCount가 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 SQL_HANDLE_STMT HandleType 및 Handle of StatementHandle을 사용하여 SQLGetDiagRec 를 호출하여 관련 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 SQLRowCount에서 일반적으로 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각각에 대해 설명합니다. "(DM)" 표기법은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 나와 있습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.
SQLSTATE | 오류 | 설명 |
---|---|---|
01000 | 일반 경고 | 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
HY000 | 일반 오류 | 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. *MessageText 버퍼의 SQLGetDiagRec에서 반환된 오류 메시지는 오류와 그 원인을 설명합니다. |
HY001 | 메모리 할당 오류 | 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다. |
HY010 | 함수 시퀀스 오류 | (DM) StatementHandle과 연결된 연결 핸들에 대해 비동기적으로 실행되는 함수가 호출되었습니다. 이 비동기 함수는 SQLRowCount 함수가 호출되었을 때 계속 실행되었습니다. (DM) SQLExecute, SQLExecDirect 또는 SQLMoreResults가 StatementHandle에 대해 호출되고 SQL_PARAM_DATA_AVAILABLE 반환되었습니다. 이 함수는 모든 스트리밍된 매개 변수에 대해 데이터를 검색하기 전에 호출되었습니다. (DM) 이 함수는 StatementHandle에 대해 SQLExecute, SQLExecDirect, SQLBulkOperations 또는 SQLSetPos를 호출하기 전에 호출되었습니다. (DM) StatementHandle에 대해 비동기적으로 실행되는 함수가 호출되었고 이 함수가 호출되었을 때에도 여전히 실행 중입니다. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations 또는 SQLSetPos가 StatementHandle에 대해 호출되고 SQL_NEED_DATA 반환되었습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대한 데이터를 보내기 전에 호출되었습니다. |
HY013 | 메모리 관리 오류 | 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다. |
HY117 | 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. | (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수를 참조 하세요. |
HYT01 | 연결 제한 시간이 만료됨 | 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr를 통해 설정됩니다. |
IM001 | 드라이버는 이 함수를 지원하지 않습니다. | (DM) StatementHandle과 연결된 드라이버는 함수를 지원하지 않습니다. |
설명
문 핸들에서 실행된 마지막 SQL 문이 UPDATE, INSERT 또는 DELETE 문이 아니거나 SQLBulkOperations에 대한 이전 호출의 Operation 인수가 SQL_ADD, SQL_UPDATE_BY_BOOKMARK 또는 SQL_DELETE_BY_BOOKMARK 아닌 경우 또는 SQLSetPos에 대한 이전 호출의 Operation 인수가 SQL_UPDATE 또는 SQL_DELETE 않은 경우 *RowCountPtr 값은 드라이버 정의입니다. 자세한 내용은 영향을 받는 행 수 확인 을 참조 하세요.
관련 함수
추가 정보 | 참조 |
---|---|
SQL 문 실행 | SQLExecDirect 함수 |
준비된 SQL 문 실행 | SQLExecute 함수 |