SQLPrimaryKeys
SQLPrimaryKeys#
단일 테이블의 프라이머리 키를 구성하는 열 이름들을 결과 집합 형태로 반환한다. 이 함수는 단일 호출에서 다중 테이블들의 프라이머리 키들을 반환하는 것은 지원하지 않는다.
Unicode SQLPrimarykeysW() 동작은 SQLPrimarykeys()와 동일하다.
구 문#
SQLRETURN SQLPrimaryKeys (
SQLHSTMT stmt,
SQLCHAR * cName,
SQLSMALLINT cNameLength,
SQLCHAR * sName,
SQLSMALLINT sNameLength,
SQLCHAR * tName,
SQLSMALLINT tNameLength );
인 자#
자료유형 | 인자 | 사용 | 설명 |
---|---|---|---|
SQLHSTMT | stmt | 입력 | 명령문 핸들 |
SQLCHAR * | cName | 입력 | 카탈로그 이름 |
SQLSMALLINT | cNameLength | 입력 | *cName의 문자 개수 |
SQLCHAR * | sName | 입력 | 스키마 이름 |
SQLSMALLINT | sNameLength | 입력 | *sName의 문자 개수 |
SQLCHAR * | tName | 입력 | 테이블 이름, null pointer일 수 없다. tName은 문자열 탐색 유형을 포함할 수 없다. |
SQLSMALLINT | tNameLength | 입력 | *tName의 문자 개수 |
결괏값#
SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR
설 명#
SQLPrimaryKeys()는 TABLE_CAT, TABLE_SCHEM, TABLE_NAME, 그리고 KEY_SEQ에 의해 순서화된 표준 결과 집합 형태로 결과들을 반환한다.
탐색 유형은 스키마 규정자 또는 테이블 이름을 지정하기 위해 사용될 수 없다.
많은 경우에 있어서, SQLPrimaryKeys() 호출이 시스템 카탈로그에 대해 복잡하여 비용이 드는 조회에 맵핑되므로 가끔 사용되어야 하며, 호출을 반복하는 대신 저장된 결과를 사용해야 한다.
다음 테이블은 결과 집합의 열들을 나열한 것이다.
열번호 | 열 이름 | 자료유형 | 설명 |
---|---|---|---|
1 | TABLE_CAT | VARCHAR | 항상 NULL이 반환 |
2 | TABLE_SCHEM | VARCHAR | 프라이머리 키 테이블 스키마 이름 |
3 | TABLE_NAME | VARCHAR (NOT NULL) | 프라이머리 키 테이블 이름 |
4 | COLUMN_NAME | VARCHAR (NOT NULL) | 1차 프라이머리 키 열 이름 |
5 | KEY_SEQ | SMALLINT (NOT NULL) | 1부터 시작하는 1차 프라이머리 키의 열 순서 번호 |
6 | PK_NAME | VARCHAR | 1차 프라이머리 키 이름 |
[표 2‑2] SQLPrimaryKeys()에 의해 반환되는 열
진 단#
SQLSTATE | 설명 | 부연설명 |
---|---|---|
08S01 | 통신 회선 장애 (데이터 송수신 실패) | Altibase CLI 드라이버와 DB간에 함수 처리가 완료되기 전에 통신 회선 실패 |
HY000 | 일반 오류 | |
HY009 | 유효하지 않은 인자 (null pointer) 사용 | tName이 null pointer 임 |
관련 함수#
SQLBindCol
SQLFetch
SQLStatistics
예 제#
< $ALTIBASE_HOME/sample/SQLCLI/demo_meta3.cpp 참고 >
if (SQLPrimaryKeys(stmt,
NULL, 0,
NULL, 0,
(char*)"DEMO_META3", SQL_NTS) != SQL_SUCCESS)
{
execute_err(dbc, stmt, "SQLPrimaryKeys");
SQLFreeStmt(stmt, SQL_DROP);
return SQL_ERROR;
}
SQLBindCol(stmt, 1, SQL_C_CHAR, szCatalog, STR_LEN,&cbCatalog);
SQLBindCol(stmt, 2, SQL_C_CHAR, szSchema, STR_LEN, &cbSchema);
SQLBindCol(stmt, 3, SQL_C_CHAR, szTableName, STR_LEN,&cbTableName);
SQLBindCol(stmt, 4, SQL_C_CHAR, szColumnName, STR_LEN, &cbColumnName);
SQLBindCol(stmt, 5, SQL_C_SSHORT, &KeySeq, 0, &cbKeySeq);
SQLBindCol(stmt, 6, SQL_C_CHAR, szPkName, STR_LEN, &cbPkName);
while ( (rc = SQLFetch(stmt)) != SQL_NO_DATA)
{
if ( rc == SQL_ERROR )
{
execute_err(dbc, stmt, "SQLPrimaryKeys:SQLFetch");
break;
}
printf("%-20s%-20s%-3d%-20s\n", szTableName,
szColumnName, KeySeq, szPkName);
}