Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 

DB_CLASS

데이터베이스 내에서 현재 사용자가 접근 권한을 가진 클래스에 대한 정보를 보여준다.

속성명

데이터 타입

설명

class_name

VARCHAR (255)

클래스명

owner_name

VARCHAR (255)

클래스 소유자명

class_type

VARCHAR (6)

클래스이면 'CLASS', 가상 클래스이면 'VCLASS'

is_system_class

VARCHAR (3)

시스템 클래스이면 'YES', 아니면 'NO'

partitioned

VARCHAR (3)

분할 그룹 클래스이면 'YES', 아니면 'NO'

is_reuse_oid_class

VARCHAR (3)

REUSE_OID 클래스이면 'YES', 아니면 'NO'

정의

CREATE VCLASS db_class (class_name, owner_name, class_type, is_system_class, partitioned, is_reuse_oid_class)

AS

 

SELECT c.class_name, CAST(c.owner.name AS VARCHAR(255)),

    CASE c.class_type WHEN 0 THEN 'CLASS' WHEN 1 THEN 'VCLASS' ELSE 'UNKNOW' END,

    CASE WHEN MOD(c.is_system_class, 2) = 1 THEN 'YES' ELSE 'NO' END,

    CASE WHEN c.sub_classes IS NULL THEN 'NO' ELSE NVL((SELECT 'YES' FROM _db_partition p WHERE p.class_of = c and p.pname IS NULL), 'NO') END,

    CASE WHEN MOD(c.is_system_class / 8, 2) = 1 THEN 'YES' ELSE 'NO' END

FROM _db_class c

WHERE CURRENT_USER = 'DBA' OR

    {c.owner.name} SUBSETEQ (  

        SELECT SET{CURRENT_USER} + COALESCE(SUM(SET{t.g.name}), SET{})  

        FROM db_user u, TABLE(groups) AS t(g)  

        WHERE u.name = CURRENT_USER) OR

    {c} SUBSETEQ (

        SELECT SUM(SET{au.class_of})  

        FROM _db_auth au  

        WHERE {au.grantee.name} SUBSETEQ(  

            SELECT SET{CURRENT_USER} + COALESCE(SUM(SET{t.g.name}), SET{})

            FROM db_user u, TABLE(groups) AS t(g)  

            WHERE u.name = CURRENT_USER) AND  au.auth_type = 'SELECT');

예제

다음 예제에서는 현재 사용자가 소유하고 있는 클래스를 검색한다.

csql> select class_name
csql> from db_class
csql> where owner_name = CURRENT_USER;
csql> ;xrun
 
=== <Result of SELECT Command in Line 1> ===
 
  class_name
======================
  'stadium'
  'code'
  'nation'
  'event'
  'athlete'
  'participant'
  'olympic'
  'game'
  'record'
  'history'
'female_event'

참고 시스템 카탈로그 가상 클래스에 대한 모든 예제는 csql 프로그램에서 작성되었는데, 위의 예제는 사용자 옵션을 생략하였으며(생략시 기본 사용자는 PUBLIC), 그 외 별도의 언급이 없는 경우 --no-auto-commit (auto-commit 모드 비활성화), -u (사용자 dba를 명시) 옵션을 사용하였다.

% csql --no-auto-commit -u dba demodb

다음 예제에서는 현재 사용자가 접근할 수 있는 가상 클래스를 검색한다.

csql> select class_name
csql> from db_class
csql> where class_type = 'VCLASS';
csql> ;xrun
 
=== <Result of SELECT Command in Line 1> ===
 
  class_name
======================
  'db_stored_procedure_args'
  'db_stored_procedure'
  'db_partition'
  'db_trig'
  'db_auth'
  'db_index_key'
  'db_index'
  'db_meth_file'
  'db_meth_arg_setdomain_elm'
  'db_meth_arg'
  'db_method'
  'db_attr_setdomain_elm'
  'db_attribute'
  'db_vclass'
  'db_direct_super_class'
  'db_class'

다음 예제에서는 현재 사용자가 접근할 수 있는 시스템 클래스를 검색한다. (사용자는 PUBLIC)

csql> select class_name
csql> from db_class
csql> where is_system_class = 'YES' and
csql>       class_type = 'CLASS'
csql> order by 1;
csql> ;xrun
 
=== <Result of SELECT Command in Line 1> ===
 
  class_name
======================
  'db_authorization'
  'db_authorizations'
  'db_root'
  'db_serial'
  'db_user'