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_ATTR_SETDOMAIN_ELM

데이터베이스 내에서 현재 사용자가 접근 권한을 가진 클래스의 속성 중에서 그 데이터 타입이 컬렉션 타입(set, multiset, sequence)인 경우, 그 컬렉션의 원소에 대한 데이터 타입을 보여준다.

속성명

데이터 타입

설명

attr_name

VARCHAR(255)

속성명

class_name

VARCHAR (255)

속성이 속한 클래스명

attr_type

VARCHAR (8)

인스턴스 속성이면 ‘INSTANCE’, 클래스 속성이면 ‘CLASS’, 공유 속성이면 ‘SHARED’

data_type

VARCHAR (9)

원소의 데이터 타입

Prec

INTEGER

원소의 데이터 타입에 대한 전체 자릿수

scale

INTEGER

원소의 데이터 타입에 대한 소수점 이하의 자릿수

code_set

INTEGER

원소의 데이터 타입이 문자 타입인 경우 그 문자집합

domain_class_name

VARCHAR (255)

원소의 데이터 타입이 객체 타입인 경우 그 도메인 클래스명

정의

CREATE VCLASS db_attr_setdomain_elm (
attr_name, class_name, attr_type,data_type, prec, scale, code_set, domain_class_name)
AS
SELECT a.attr_name, c.class_name,
       CASE WHEN a.attr_type = 0 THEN 'INSTANCE'
            WHEN a.attr_type = 1 THEN 'CLASS'
            ELSE 'SHARED' END,
       et.type_name, e.prec, e.scale, e.code_set, e.class_of.class_name
FROM _db_class c, _db_attribute a, _db_domain d,
      TABLE(d.set_domains) AS t(e), _db_data_type et
WHERE a.class_of = c AND d.object_of = a AND e.data_type = et.type_id AND
        (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')); 

가령 클래스 D의 속성 set_attr 이 SET(A, B, C) 타입이면 다음 세 개의 레코드들이 존재하게 된다.

Attr_name

Class_name

Attr_type

Data_type

Prec

Scale

Code_set

Domain_class_name

‘set_attr’

‘D’

‘INSTANCE’

‘SET’

0

0

0

‘A’

‘set_attr’

‘D’

‘INSTANCE’

‘SET’

0

0

0

‘B’

‘set_attr’

‘D’

‘INSTANCE’

‘SET’

0

0

0

‘C’

예제

다음 예제에서는 클래스 city의 컬렉션 타입의 각 원소의 속성과 데이터 타입을 검색한다. (포함 연산자에 정의한 city 테이블을 생성)

SELECT attr_name, attr_type, data_type, domain_class_name
FROM db_attr_setdomain_elm
WHERE class_name = 'city';
  attr_name             attr_type             data_type             domain_class_name
==============================================================================
 
'sports'              'INSTANCE'            'STRING'              NULL