데이터베이스 분류
ORDBMS기능 맛배기
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 9,335 조회
- 0 추천
- 목록
본문
ORDBMS기능 맛배기
ORDBMS라고 들어봤을 것이다.
좀 모순이 있는 용어라고 생각된다. 하지만.. 어디까지나 내 생각이다.
본인이 프로그래머라 일단은 C++의 클래스의 개념과 비슷한 type이란 놈을 설명하겠다.
type은 create type이라는 질의로 만들수 있다.
일단 예제를 보자.
create type paycheck_type as object
(
check_number number(20),
payer varchar2(40),
payee varchar2(40),
date_issued date,
payment_authorization varchar2(10),
payer_account_number varchar2(20),
routing_number varchar2(20),
payment_amount number(10),
member function adjust_amount( check_number number, deduct_amount number) return number
-- pragma restrict_references(adjust_amount, WNDS)
);
푸.. 이거 완전히 C++의 class구조이다.
무지하게 흥미가 당기게 만든다.
일반 테이블 선언하듯이 하면 되는데 일단은 as object라는 것이 붙어서 자신이 객체라는
것을 알린다. member function도 존재해서 object화를 하는데 구색은 다 갖췄다.
member function은 PL/SQL로 개발할 수 있다.
여기서 adjust_amount라는 놈을 정의해보자.
type body로써 정의한다.
create or replace type body paycheck_type is
member function adjust_amount( check_number number, deduct_amount number) return number is
begin
return check_number - deduct_amount;
end;
end;
실제 위의 예제를 SQL*PLUS상에서 보자.
SQL> create type paycheck_type as object
2 (
3 check_number number(20),
4 payer varchar2(40),
5 payee varchar2(40),
6 date_issued date,
7 payment_authorization varchar2(10),
8 payer_account_number varchar2(20),
9 routing_number varchar2(20),
10 payment_amount number(10),
11 member function adjust_amount( check_number number, deduct_amount number) return number
12 -- pragma restrict_references(adjust_amount, WNDS)
13 );
14 /
유형이 작성되었습니다.
SQL> create or replace type body paycheck_type is
2 member function adjust_amount( check_number number, deduct_amount number) return number is
3 begin
4 return check_number - deduct_amount;
5 end;
6 end;
7 /
유형 본체가 작성되었습니다.
실제 위의 것은 어떻게 사용될 수 있는가?
테이블을 만들어 보자.
위에서 만든 type을 of라는 놈을 사용해서 테이블 만들때 참조한다.
SQL> create table paycheck of paycheck_type;
테이블이 생성되었습니다.
SQL> desc paycheck;
이름 널? 유형
----------------------------------------------------- -------- --------------
CHECK_NUMBER NUMBER(20)
PAYER VARCHAR2(40)
PAYEE VARCHAR2(40)
DATE_ISSUED DATE
PAYMENT_AUTHORIZATION VARCHAR2(10)
PAYER_ACCOUNT_NUMBER VARCHAR2(20)
ROUTING_NUMBER VARCHAR2(20)
PAYMENT_AMOUNT NUMBER(10)
SQL>
재미있는 것은 type이 또 다른 type을 포함할 수 있다는 것이다.
즉, 다음과 같은 표현이 가능하다.
SQL> create type debit_payroll_type as object
2 (
3 acc_wd_num number(10),
4 debit ref paycheck_type
5 );
6 /
유형이 작성되었습니다.
debit_payroll도 type이지만, paycheck_type이라는 또 다른 type을 포함하고 있다.
이건 C++에서의 상속과 유사한 개념이다.
그럼 실제 데이터를 넣어보자.
SQL> insert into paycheck values (
2 paycheck_type(123456, '사장', '명규', sysdate, 'Neximo', 123, 123, 2400));
1 개의 행이 만들어졌습니다.
SQL> select * from paycheck;
CHECK_NUMBER PAYER PAYEE DATE_ISS PAYMENT_AU PAYER_ACCOUNT_NUMBER ROUTING_NUMBER PAYMENT_AMOUNT
------------ ---------- ---------- -------- ---------- -------------------- -------------------- ---
123456 사장 명규 01/04/03 Neximo 123 123 2400
흠.. 재미있군..
지금이 02시군.. 내일도 직장에 가야하니까.. 여기까지..
"무단배포금지: 클라우드포털(www.linux.co.kr)의 모든 강좌는 저작권에 의해 보호되는 콘텐츠입니다. 무단으로 복제하여 배포하는 행위는 금지되어 있습니다."
관련자료
-
이전
-
다음
댓글 0
등록된 댓글이 없습니다.
