SQLDescribeCol
SQLDescribeCol#
결과 집합에서 한 열의 이름, 데이터 형, 십진 숫자, nullability를 돌려준다.
Unicode SQLDescribeColW() 동작은 SQLDescribeCol()와 동일하다.
구 문#
SQLRETURN SQLDescribeCol (
SQLHSTMT stmt,
SQLSMALLINT col,
SQLCHAR * name,
SQLSMALLINT nameMax,
SQLSMALLINT * nameLength,
SQLSMALLINT * type,
SQLINTEGER * precision,
SQLSMALLINT * scale,
SQLSMALLINT * nullable );
인 자#
자료유형 | 인자 | 사용 | 설명 |
---|---|---|---|
SQLHSTMT | stmt | 입력 | 명령문 핸들 |
SQLSMALLINT | col | 입력 | 1 부터 시작하는 매개변수 마커 순서 |
SQLCHAR* | name | 출력 | 열 이름의 포인터 |
SQLSMALLINT | nameMax | 입력 | *name의 문자 개수 |
SQLSMALLINT * | nameLength | 출력 | *name에 반환 가능한 총 바이트 수 (null-termination byte 제외) |
SQLSMALLINT * | type | 출력 | 열의 SQL 데이터 타입의 포인터 |
SQLINTEGER * | precision | 출력 | 데이터베이스에 대한 열 크기의 포인터 열 크기가 결정될 수 없다면 Altibase CLI 드라이버는 0을 반환 |
SQLSMALLINT * | scale | 출력 | 데이터베이스에 대한 열의 십진 숫자의 개수의 포인터 십진 숫자의 개수가 결정될 수 없거나 적절하지 않으면 Altibase CLI 드라이버는 0을 반환 |
SQLSMALLINT * | nullable | 출력 | 열이 null이 허용 되는지를 보여주는 값의 포인터 SQL_NO_NULLS: 열이 NULL을 허용하지 않음 SQL_NULLABLE: 열은 NULL을 허용 |
결괏값#
SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR
설 명#
애플리케이션은 전형적으로 SQLPrepare()를 호출 한 후에 그리고 SQLExecute()를 호출 하기 전에 SQLDescribeCol()을 호출한다. 또한 애플리케이션은 SQLExecDirect()를 호출 한 후에 SQLDescribeCol()를 호출할 수 있다.
SQLDescribeCol()은 SELECT 문에 의해 생성된 열의 이름, 타입, 그리고 길이를 검색한다. 만약 열이 표현식이면 *name은 표현식이다.
진 단#
SQLSTATE | 설명 | 부연설명 |
---|---|---|
01004 | 자료가 잘림 | 버퍼 *name이 전체 열 이름을 반환할 만큼 크지 않아서 열 이름이 잘림 잘리지 않은 열 이름의 길이는 *nameLength로 반환된다. |
07009 | 유효하지 않은 설명자 인덱스 | 명시된 col 값이 0임 명시된 col 값이 결과 집합의 열의 개수보다 큼 |
HY000 | 일반 오류 | |
HY090 | 유효하지 않은 문자열 또는 버퍼 길이 | 명시된 nameMax 값이 0 보다 작음 |
SQLDescribeCol()이 SQLPrepare() 후, SQLExecute() 전에 호출됐을 때 SQLPrepare()나 SQLExecute()에 의해 반환될 수 있는 모든 SQLSTATE를 반환할 수 있다.
관련 함수#
SQLBindCol
SQLColAttribute
SQLFetch
SQLNumResultCols
SQLPrepare
예 제#
< $ALTIBASE_HOME/sample/SQLCLI/demo_ex1.cpp 참고 >
sprintf(query,"SELECT * FROM DEMO_EX1");
if (SQLExecDirect(stmt, (SQLCHAR *)query, SQL_NTS) != SQL_SUCCESS)
{
execute_err(dbc, stmt, query);
SQLFreeStmt(stmt, SQL_DROP);
return SQL_ERROR;
}
SQLNumResultCols(stmt, &columnCount);
for ( i=0; i<columnCount; i++ )
{
SQLDescribeCol(stmt, i+1,
(SQLCHAR *)columnName, sizeof(columnName), &columnNameLength,
&dataType, &columnSize, &scale, &nullable);
printf("columnName = %s, nullable = %d\n", columnName, nullable);
}