콘텐츠로 이동

SQLTablePrivileges

SQLTablePrivileges#

테이블들의 목록과 각 테이블과 관련된 권한들을 반환한다. Altibase CLI 드라이버는 명시된 명령문 상에 결과 집합으로써 정보를 반환한다.

Unicode SQLTablePrivilegesW() 동작은 SQLTablePrivileges()와 동일하다.

구 문#

SQLRETURN  SQLTablePrivileges(
    SQLHSTMT        stmt,   
    SQLCHAR *       cName,  
    SQLSMALLINT     cNaneLength,        
    SQLCHAR *       sName,      
    SQLSMALLINT     sNameLength,        
    SQLCHAR *       tName, 
    SQLSMALLINT     tNameLength);

인 자#

자료유형 인자 사용 설명
SQLHSTMT stmt 입력 명령문 핸들
SQLCHAR* cName 입력 카탈로그 이름
SQLSMALLINT cNameLength 입력 *cName의 문자 개수
SQLCHAR * sName 입력 검색할 스키마 이름
SQLSMALLINT sNameLength 입력 *sName의 문자 개수
SQLCHAR * tName 입력 검색할 테이블 이름
SQLSMALLINT tNameLength 입력 *tName의 문자 개수

결괏값#

SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR

설 명#

SQLTablePrivileges()는 TABLE_CAT, TABLE_SCHEM, TABLE_NAME, PRIVILEGE, 그리고 GRANTEE에 의해 순서화된 표준 결과 집합 형태로 결과들을 반환한다.

다음 테이블은 결과 집합의 열들을 나열한다.

이름 번호 자료 유형 설명
TABLE_CAT 1 VARCHAR 항상 NULL 반환
TABLE_SCHEM 2 VARCHAR 스키마 이름.
DB에 적절하지 않은 경우 NULL
TABLE_NAME 3 VARCHAR (NOT NULL) 테이블 이름
GRANTOR 4 VARCHAR 권한을 부여한 사용자 이름.
DB에 적절하지 않은 경우 NULL
GRANTEE 5 VARCHAR (NOT NULL) 권한을 부여 받은 사용자 이름
PRIVILEGE 6 VARCHAR (NOT NULL) 테이블 권한. 다음 권한 중에 하나이다.
- ALTER: 피 수여자는 테이블의 정의를 변경할 수 있다.
- DELETE: 피 수여자는 테이블의 행들을 삭제하는 것이 허용된다.
- INDEX: 피 수여자는 테이블에 대하여 인덱스 연산 (create, alter 등)이 허용된다.
- INSERT: 피 수여자는 새로운 행들을 테이블에 삽입할 수 있다.
- REFERENCES: 피 수여자는 제한조건을 가진 테이블의 열을 참조하는 것이 허용된다.
- SELECT: 피 수여자가 테이블에서 한 개 또는 여러 열들을 검색하는 것이 허용된다.
- UPDATE: 피 수여자는 테이블에 대하여 하나 이상의 데이터를 수정할 수 있다.
IS_GRANTABLE 7 VARCHAR 피 수여자가 다른 사용자들에게 권한을 부여할 수 있는지를 나타낸다: YES, NO, 또는 DB에 적절치 않거나 알려지지 않은 경우 NULL

[표 2‑6] SQLTablePrivileges()에 의해 반환 되는 열

진 단#

SQLSTATE 설명 부연설명
08S01 통신 회선 장애 (데이터 송수신 실패) Altibase CLI 드라이버와 DB간에 함수 처리가 완료되기 전에 통신 회선 실패
HY009 유효하지 않은 인자 (null pointer) 사용 인자 cName이 null 포인터임.
HY090 유효하지 않은 문자열 또는 버퍼 길이 이름 길이 인자들 중 하나의 값이 0보다 작거나 SQL_NTS와 같지 않음.

관련 함수#

SQLBindCol
SQLCancel
SQLColumns
SQLFetch
SQLPrimaryKeys
SQLStatistics
SQLTables

예 제#

< $ALTIBASE_HOME/sample/SQLCLI/demo_meta10.cpp 참고 >

if (SQLTablePrivileges(stmt,
                       NULL, 0,
                       "SYS", SQL_NTS,
                       "DEMO_META10", SQL_NTS) != SQL_SUCCESS)
    {
        execute_err(dbc, stmt, "SQLTablePrivileges");
        SQLFreeStmt(stmt, SQL_DROP);
        return SQL_ERROR;
    }

    SQLBindCol(stmt, 2, SQL_C_CHAR, szSchema, NAME_LEN, &cbSchema);
    SQLBindCol(stmt, 3, SQL_C_CHAR, szTableName, NAME_LEN,&cbTableName);
    SQLBindCol(stmt, 4, SQL_C_CHAR, szGrantor, NAME_LEN, &cbGrantor);
    SQLBindCol(stmt, 5, SQL_C_CHAR, szGrantee, NAME_LEN, &cbGrantee);
    SQLBindCol(stmt, 6, SQL_C_CHAR, szPrivilege, NAME_LEN,&cbPrivilege);
    SQLBindCol(stmt, 7, SQL_C_CHAR, szGrantable, 5, &cbGrantable);