데이터베이스 분류
ORDBMS기능 맛배기
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 7,081 조회
- 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
등록된 댓글이 없습니다.