SQLGetStmtAttr 함수
규칙
도입된 버전: ODBC 3.0 표준 준수: ISO 92
요약
SQLGetStmtAttr은 문 특성의 현재 설정을 반환합니다.
참고 항목
드라이버 관리자가 이 함수를 ODBC 3에 매핑하는 항목에 대한 자세한 내용을 보려면x 애플리케이션이 ODBC 2에서 작동합니다.x 드라이버는 애플리케이션의 이전 버전과의 호환성을 위한 대체 함수 매핑을 참조 하세요.
구문
SQLRETURN SQLGetStmtAttr(
SQLHSTMT StatementHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
인수
StatementHandle
[입력] 문 핸들입니다.
특성
[입력] 검색할 특성입니다.
ValuePtr
[출력] 특성에 지정된 특성의 값을 반환할 버퍼에 대한 포인터입니다.
ValuePtr이 NULL인 경우 StringLengthPtr은 ValuePtr가 가리키는 버퍼에서 반환할 수 있는 총 바이트 수(문자 데이터의 null 종료 문자 제외)를 계속 반환합니다.
BufferLength
[입력] 특성이 ODBC 정의 특성이고 ValuePtr가 문자열 또는 이진 버퍼를 가리키는 경우 이 인수는 *ValuePtr 길이여야 합니다. 특성이 ODBC 정의 특성이고 *ValuePtr이 정수인 경우 BufferLength는 무시됩니다. *ValuePtr에서 반환된 값이 유니코드 문자열인 경우(SQLGetStmtAttrW를 호출할 때) BufferLength 인수는 짝수여야 합니다.
특성이 드라이버 정의 특성인 경우 애플리케이션은 BufferLength 인수를 설정하여 드라이버 관리자에 대한 특성의 특성을 나타냅니다. BufferLength 는 다음 값을 가질 수 있습니다.
*ValuePtr이 문자열에 대한 포인터인 경우 BufferLength는 문자열 또는 SQL_NTS 길이입니다.
*ValuePtr이 이진 버퍼에 대한 포인터인 경우 애플리케이션은 bufferLength에 SQL_LEN_BINARY_ATTR(길이) 매크로의 결과를 배치합니다. 그러면 BufferLength에 음수 값이 배치됩니다.
*ValuePtr이 문자열이나 이진 문자열이 아닌 값에 대한 포인터인 경우 BufferLength에는 SQL_IS_POINTER 값이 있어야 합니다.
*ValuePtr에 고정 길이 데이터 형식이 포함된 경우 BufferLength는 적절하게 SQL_IS_INTEGER 또는 SQL_IS_UINTEGER.
StringLengthPtr
[출력] *ValuePtr에서 반환할 수 있는 총 바이트 수(null 종료 문자 제외)를 반환할 버퍼에 대한 포인터입니다. 특성 값이 문자열이고 반환할 수 있는 바이트 수가 BufferLength보다 크거나 같으면 *ValuePtr의 데이터는 BufferLength에서 null 종료 문자의 길이를 뺀 값으로 잘리고 드라이버에서 null로 종료됩니다.
반품
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR 또는 SQL_INVALID_HANDLE.
진단
SQLGetStmtAttr가 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 SQL_HANDLE_STMT HandleType 및Handle of StatementHandle을 사용하여 SQLGetDiagRec 를 호출하여 관련 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 SQLGetStmtAttr에서 일반적으로 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각각에 대해 설명합니다. 표기법 "(DM)"은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 나와 있습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.
SQLSTATE | Error | 설명 |
---|---|---|
01000 | 일반 경고 | 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
01004 | 문자열 데이터, 오른쪽 잘림 | *ValuePtr에서 반환된 데이터는 Null 종료 문자의 길이를 뺀 BufferLength로 잘렸습니다. 신뢰할 수 없는 문자열 값의 길이는 *StringLengthPtr에서 반환됩니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
24000 | 커서 상태가 잘못되었습니다. | 인수 특성 이 SQL_ATTR_ROW_NUMBER 커서가 열려 있지 않거나 결과 집합이 시작되기 전이나 결과 집합의 끝 뒤에 커서가 배치되었습니다. |
HY000 | 일반 오류 | 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. MessageText 인수에서 SQLGetDiagRec에서 반환된 오류 메시지는 오류와 그 원인을 설명합니다. |
HY001 | 메모리 할당 오류 | 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다. |
HY010 | 함수 시퀀스 오류 | (DM) StatementHandle과 연결된 연결 핸들에 대해 비동기적으로 실행되는 함수가 호출되었습니다. 이 비동기 함수는 SQLGetStmtAttr 함수가 호출되었을 때 계속 실행됩니다. (DM) StatementHandle에 대해 비동기적으로 실행되는 함수가 호출되었고 이 함수가 호출되었을 때에도 여전히 실행 중입니다. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations 또는 SQLSetPos가 StatementHandle에 대해 호출되고 SQL_NEED_DATA 반환되었습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대한 데이터를 보내기 전에 호출되었습니다. |
HY013 | 메모리 관리 오류 | 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다. |
HY090 | 잘못된 문자열 또는 버퍼 길이 | (DM) *ValuePtr 는 문자열이고 BufferLength는 0보다 작지만 SQL_NTS 같지는 않습니다. |
HY092 | 잘못된 특성/옵션 식별자 | 인수 특성 에 지정된 값이 드라이버에서 지원하는 ODBC 버전에 대해 유효하지 않습니다. |
HY109 | 커서 위치가 잘못되었습니다. | 특성 인수가 SQL_ATTR_ROW_NUMBER 행이 삭제되었거나 가져올 수 없습니다. |
HY117 | 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. | (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수를 참조 하세요. |
HYC00 | 선택적 기능이 구현되지 않음 | 인수 특성 에 지정된 값은 드라이버에서 지원하는 ODBC 버전의 유효한 ODBC 문 특성이지만 드라이버에서 지원되지 않았습니다. |
HYT01 | 연결 제한 시간이 만료됨 | 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr를 통해 설정됩니다. |
IM001 | 드라이버는 이 함수를 지원하지 않습니다. | (DM) StatementHandle에 해당하는 드라이버는 함수를 지원하지 않습니다. |
주석
문 특성에 대한 일반적인 내용은 문 특성을 참조 하세요.
SQLGetStmtAttr 호출은 *ValuePtr에서 특성에 지정된 문 특성의 값을 반환합니다. 이 값은 SQLULEN 값 또는 null로 끝나는 문자열일 수 있습니다. 값이 SQLULEN 값인 경우 일부 드라이버는 버퍼의 하위 32비트 또는 16비트만 쓰고 상위 순서 비트는 변경되지 않은 상태로 둘 수 있습니다. 따라서 애플리케이션은 SQLULEN 버퍼를 사용하고 이 함수를 호출하기 전에 값을 0으로 초기화해야 합니다. 또한 BufferLength 및 StringLengthPtr 인수는 사용되지 않습니다. 값이 null로 끝나는 문자열인 경우 애플리케이션은 BufferLength 인수에서 해당 문자열의 최대 길이를 지정하고 드라이버는 *StringLengthPtr 버퍼에서 해당 문자열의 길이를 반환합니다.
SQLGetStmtAttr을 호출하는 애플리케이션이 ODBC 2에서 작동하도록 허용합니다.x 드라이버, SQLGetStmtAttr에 대한 호출은 드라이버 관리자에서 SQLGetStmtOption에 매핑됩니다.
다음 문 특성은 읽기 전용이므로 SQLGetStmtAttr에서 검색할 수 있지만 SQLSetStmtAttr에서 설정할 수는 없습니다.
SQL_ATTR_IMP_PARAM_DESC
SQL_ATTR_IMP_ROW_DESC
SQL_ATTR_ROW_NUMBER
설정하고 검색할 수 있는 특성 목록은 SQLSetStmtAttr을 참조하세요.
관련 함수
추가 정보 | 참조 |
---|---|
연결 특성 설정 반환 | SQLGetConnectAttr 함수 |
연결 특성 설정 | SQLSetConnectAttr 함수 |
문 특성 설정 | SQLSetStmtAttr 함수 |