SQLGetCursorName 함수
규칙
버전 소개: ODBC 1.0 표준 준수: ISO 92
요약
SQLGetCursorName 은 지정된 문과 연결된 커서 이름을 반환합니다.
구문
SQLRETURN SQLGetCursorName(
SQLHSTMT StatementHandle,
SQLCHAR * CursorName,
SQLSMALLINT BufferLength,
SQLSMALLINT * NameLengthPtr);
인수
StatementHandle
[입력] 문 핸들입니다.
CursorName
[출력] 커서 이름을 반환할 버퍼에 대한 포인터입니다.
CursorName이 NULL인 경우 NameLengthPtr은 CursorName이 가리키는 버퍼에서 반환할 수 있는 총 문자 수(문자 데이터의 null 종료 문자 제외)를 계속 반환합니다.
BufferLength
[입력] *CursorName의 길이(문자)입니다.
NameLengthPtr
[출력] *CursorName에서 반환할 수 있는 총 문자 수(null 종료 문자 제외)를 반환할 메모리에 대한 포인터입니다. 반환할 수 있는 문자 수가 BufferLength보다 크거나 같으면 *CursorName의 커서 이름이 BufferLength에서 null 종료 문자의 길이를 뺀 값으로 잘립니다.
반품
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR 또는 SQL_INVALID_HANDLE.
진단
SQLGetCursorName이 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 SQL_HANDLE_STMT HandleType 및 Handle of StatementHandle을 사용하여 SQLGetDiagRec 를 호출하여 관련 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 SQLGetCursorName에서 일반적으로 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각각에 대해 설명합니다. 표기법 "(DM)"은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 나와 있습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.
SQLSTATE | 오류 | 설명 |
---|---|---|
01000 | 일반 경고 | 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
01004 | 문자열 데이터, 오른쪽 잘림 | 버퍼 *CursorName 이 커서 이름 전체를 반환할 만큼 크지 않아 커서 이름이 잘렸습니다. 신뢰할 수 없는 커서 이름의 길이는 *NameLengthPtr에서 반환됩니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
HY000 | 일반 오류 | 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. *MessageText 버퍼의 SQLGetDiagRec에서 반환된 오류 메시지는 오류와 그 원인을 설명합니다. |
HY001 | 메모리 할당 오류 | 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다. |
HY010 | 함수 시퀀스 오류 | (DM) StatementHandle과 연결된 연결 핸들에 대해 비동기적으로 실행되는 함수가 호출되었습니다. 이 비동기 함수는 SQLGetCursorName 함수가 호출되었을 때 계속 실행되었습니다. (DM) SQLExecute, SQLExecDirect 또는 SQLMoreResults가 StatementHandle에 대해 호출되고 SQL_PARAM_DATA_AVAILABLE 반환되었습니다. 이 함수는 모든 스트리밍된 매개 변수에 대해 데이터를 검색하기 전에 호출되었습니다. (DM) StatementHandle에 대해 비동기적으로 실행되는 함수가 호출되었고 이 함수가 호출되었을 때에도 여전히 실행 중입니다. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations 또는 SQLSetPos가 StatementHandle에 대해 호출되고 SQL_NEED_DATA 반환되었습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대한 데이터를 보내기 전에 호출되었습니다. |
HY013 | 메모리 관리 오류 | 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다. |
HY015 | 사용할 수 있는 커서 이름 없음 | (DM) 드라이버가 ODBC 2*.x* 드라이버였고 문에 열려 있는 커서가 없었으며 SQLSetCursorName으로 커서 이름이 설정되지 않았습니다. |
HY090 | 잘못된 문자열 또는 버퍼 길이 | (DM) BufferLength 인수에 지정된 값이 0보다 작습니다. |
HY117 | 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. | (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수를 참조 하세요. |
HYT01 | 연결 제한 시간이 만료됨 | 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr를 통해 설정됩니다. |
IM001 | 드라이버는 이 함수를 지원하지 않습니다. | (DM) StatementHandle과 연결된 드라이버는 함수를 지원하지 않습니다. |
설명
커서 이름은 위치가 지정된 업데이트 및 삭제 문(예: UPDATE 테이블 이름...WHERE CURRENT OF cursor-name). 자세한 내용은 위치 지정 업데이트 및 삭제 문을 참조 하세요. 애플리케이션에서 커서 이름을 정의하기 위해 SQLSetCursorName을 호출하지 않으면 드라이버가 이름을 생성합니다. 이 이름은 SQL_CUR 문자로 시작합니다.
참고 항목
ODBC 2*.x*에서 열려 있는 커서가 없고 SQLSetCursorName 호출로 이름이 설정되지 않은 경우 SQLGetCursorName에 대한 호출에서 SQLSTATE HY015(사용할 수 있는 커서 이름 없음)가 반환되었습니다. ODBC 3*.x*에서는 더 이상 true가 아닙니다. SQLGetCursorName이 호출되는 시기와 관계없이 드라이버는 커서 이름을 반환합니다.
SQLGetCursorName 은 이름이 명시적으로 만들어졌는지 암시적으로 만들어졌는지 여부에 관계없이 커서의 이름을 반환합니다. SQLSetCursorName이 호출되지 않으면 커서 이름이 암시적으로 생성됩니다. 커서가 할당되거나 준비된 상태인 한 SQLSetCursorName 을 호출하여 문의 커서 이름을 바꿀 수 있습니다.
명시적으로 또는 암시적으로 설정된 커서 이름은 SQLFreeHandle과 SQL_HANDLE_STMT HandleType을 사용하여 연결된 StatementHandle 이 삭제될 때까지 설정됩니다.
관련 함수
추가 정보 | 참조 |
---|---|
SQL 문 실행 | SQLExecDirect 함수 |
준비된 SQL 문 실행 | SQLExecute 함수 |
실행을 위한 문 준비 | SQLPrepare 함수 |
커서 이름 설정 | SQLSetCursorName 함수 |