데이터베이스 내에서 현재 사용자가 접근 권한을 가진 클래스의 메소드에 대해 그 입출력 인자 정보를 보여준다.
속성명 |
데이터 타입 |
설명 |
---|---|---|
meth_name |
VARCHAR (255) |
메소드명 |
class_name |
VARCHAR (255) |
메소드가 속한 클래스명 |
meth_type |
VARCHAR (8) |
인스턴스 메소드이면 ‘INSTANCE’, 클래스 메소드이면 ‘CLASS’ |
index_of |
INTEGER |
인자가 함수 정의에 나열된 순서. 리턴 값이면 0, 입력인자이면 1부터 시작함 |
data_type |
VARCHAR (9) |
인자의 데이터 타입 |
prec |
INTEGER |
인자의 전체 자릿수 |
scale |
INTEGER |
인자의 소수점 이하의 자릿수 |
code_set |
INTEGER |
인자의 데이터 타입이 문자 타입인 경우 그 문자집합 |
domain_class_name |
VARCHAR (255) |
인자의 데이터 타입이 객체 타입인 경우 도메인 클래스명 |
CREATE VCLASS db_meth_arg (
meth_name, class_name, meth_type,
index_of, data_type, prec, scale, code_set, domain_class_name)
AS
SELECT s.meth_of.meth_name, s.meth_of.class_of.class_name,
CASE WHEN s.meth_of.meth_type = 0 THEN 'INSTANCE' ELSE 'CLASS' END,
a.index_of, t.type_name, d.prec, d.scale, d.code_set,
d.class_of.class_name
FROM _db_meth_sig s, _db_meth_arg a, _db_domain d, _db_data_type t
WHERE a.meth_sig_of = s AND d.object_of = a AND d.data_type = t.type_id AND
(CURRENT_USER = 'DBA' OR
{s.meth_of.class_of.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
{s.meth_of.class_of} 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'));
다음 예제에서는 클래스 ‘glo’의 메소드 ‘append_data’의 입력 인자를 검색한다.
csql> select meth_name, data_type, prec
csql> from db_meth_arg
csql> where class_name = 'glo' and
csql> meth_name = 'append_data' and
csql> index_of > 0
csql> order by index_of;
csql> ;xrun
=== <Result of SELECT Command in Line 1> ===
meth_name data_type prec
=========================================================
'append_data' 'INTEGER' 0
'append_data' 'STRING' 1073741823