클래스에 대한 정보를 표현하며 class_name에 대한 인덱스가 생성되어 있다.
속성명 |
데이터 타입 |
설명 |
---|---|---|
class_of |
object |
클래스 객체로서 시스템 내부에 저장된 클래스에 대한 메타 정보 객체를 의미한다. |
inst_attr_count |
INTEGER |
인스턴스 속성의 개수 |
shared_attr_count |
INTEGER |
공유 속성의 개수 |
inst_meth_count |
INTEGER |
인스턴스 메소드의 개수 |
class_meth_count |
INTEGER |
클래스 메소드의 개수 |
class_attr_count |
INTEGER |
클래스 속성의 개수 |
is_system_class |
INTEGER |
사용자가 정의한 클래스이면 0, 시스템 클래스이면 1 |
class_type |
INTEGER |
클래스이면 0, 가상 클래스이면 1 |
owner |
db_user |
클래스 소유자 |
class_name |
VARCHAR(255) |
클래스명 |
sub_classes |
SEQUENCE OF _db_class |
한 단계 하위 클래스 |
super_classes |
SEQUENCE OF _db_class |
한 단계 상위 클래스 |
inst_attrs |
SEQUENCE OF _db_attribute |
인스턴스 속성 |
shared_attrs |
SEQUENCE OF _db_attribute |
공유 속성 |
class_attrs |
SEQUENCE OF _db_attribute |
클래스 속성 |
inst_meths |
SEQUENCE OF _db_method |
인스턴스 메소드 |
class_meths |
SEQUENCE OF _db_method |
클래스 메소드 |
meth_files |
SEQUENCE OF _db_methfile |
메소드에 대한 함수가 위치한 파일 경로 |
query_specs |
SEQUENCE OF _db_queryspec |
가상 클래스인 경우 그 SQL 정의문 |
indexes |
SEQUENCE OF _db_index |
클래스에 생성된 인덱스 |
다음 예제에서는 사용자 'PUBLIC'이 소유하고 있는 클래스의 모든 하위 클래스를 검색한다(결과로 보이는 하위 클래스 female_event는 ADD SUPERCLASS 절의 예제를 참조한다).
csql> select class_name, sequence(select class_name
csql> from _db_class s
csql> where s in c.sub_classes)
csql> from _db_class c
csql> where c.owner.name = 'PUBLIC' and
csql> c.sub_classes is NOT NULL;
csql> ;x
=== <Result of SELECT Command in Line 1> ===
class_name sequence((select class_name from _db_class s where s in c.sub_classes))
============================================
'event' {'female_event'}
1 rows selected.
참고 시스템 카탈로그 클래스에 대한 모든 예제는 csql 프로그램에서 작성되었는데, 여기에서는 --no-auto-commit (auto-commit 모드 비활성화), -u (사용자 dba를 명시) 옵션을 사용하였다.
% csql --no-auto-commit -u dba demodb