Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

기록

day 0625 본문

📖

day 0625

슈슈파나 2024. 6. 25. 17:50

오라클리 제공하는 함수들이 많이 있다

sum, max, min, count, ..

이러한 함수들은 모두 select절에 사용할 수 있다

 

이것들처럼 사용자가 select절에 ~

 

** 사용자 정의 함수(function) 만드는 방법

create or replace function 함수이름 (매개변수명 자료형) return 자료형 -- 반환하는 자료형
is
    변수선언
begin
    함수가 해야 할 문장
    return 값;
end;

 

연습) 판매금액을 매개변수로 전달받아 이익금을 반환하는 함수를 만들어 봅시다

          판매금액이 30000원 이상이면 10% 그렇지 않으면 5%가 이익금이다

 

-- 이익금 계산하는 function

create or replace function margin(saleprice number) return number
is
    result number; // local variable
begin
    if saleprice >= 30000 then
        result = saleprice * 0.1;
    else
        result = saleprice * 0.05;
    end if;
    return result;
end;
/

 

-- 각 주문에 대한 주문번호, 판매금액, 이익금 출력하기

select orderid, saleprice, margin(saleprice) from orders;

 

-- 21번 이후 주문을 오늘 날짜로 바꾼다

update orders set orderdate = sysdate where orderid >= 21;

 

-- 오늘 날짜에 판매된 주문에 대한 주문번호, 도서번호, 도서명, 고객명, 이익금 출력 

select orderid, bookid, bookname, name, margin(saleprice)

from book b, customer c, orders o 

where b.bookid = o.bookid and c.custid = o.custid where orders and

orderdate = sysdate;

select orderid, b.bookid, bookname, name, margin(saleprice)
from customer c, orders o, book b
where c.custid = o.custid and
b.bookid = o.bookid and
to_char(sysdate, 'yyyy/mm/dd') = to_char(orderdate, 'yyyy/mm/dd');

 

연습) 고객번호를 매개변수로 전달받아 그 고객의 총 주문액을 계산하여 주문총액이 20000원 이상이면 "우수"

         그렇지 않으면 "보통"을 반환하는 grade 함수를 만들고 호출하기

create or replace function grade(myCustid number) return varchar2
is
    result varchar2(30)
    total number;
begin

    select sum(saleprice) into total from orders where custid = myCustid;
    if total >= 20000 then
        result := "우수";
    else
        result := "보통";
    end if;
    return result;
end;
/

 

ed ff

column grade format a15;

@@ff

 

- 고객 이름과 등급 출력하기

select name, grade(custid) grade from customer;

 

연습) 고객의 주소를 매개변수로 전달받아 국내에 거주하면 '국내거주' 그렇지 않으면 

         '국외거주'를 반환하는 함수를 만들고 호출 해 보기

create or replace function demestic(myAddr varchar2)
return varchar2
is
    result varchar2(30);
begin
    if myAddr like '%대한민국%' then
        result := '국내거주';
    else
        result := '국외거주';
    end if;
    return result;
end;
/

 

ed ff

column demestic format a15;

@@ff

 

select name, demestic(address) demestic from customer;
select name, demestic(address) demestic, grade(custid) grade from customer;

 


 

화면정의서, sql 명세서, 클래스 명세서  -->  6/25 5교시

프로젝트 프로파일러

-- 프로젝트 수행 시 팀원들간 약속 정하기

   클래스 이름 어떤식인지

   멤버변수명, 메소드이름, 들여쓰기, 중괄호 위치, 글자크기 등

   사소한 약속까지 정하기

 

이에 산출물 작업이 완료된 팀은 역할분담, 작업일정표에 대한 회의 진행 

 

프로그램 구현 및 테스트 -->  6/26 - 7/2

발표  -->  7/2

 

- 팀별 프로젝트 작업을 진행합니다

- 각 화면별 sql 명세서를 정의하지 않은 팀은 구체화 한 후에 진행합니다

'📖' 카테고리의 다른 글

day 0624  (1) 2024.06.24
day 0619  (0) 2024.06.19
day 0618 데이터베이스(4)  (0) 2024.06.18
day 0617 데이터베이스(3)  (0) 2024.06.17
day 0614 데이터베이스 모델링(2)  (0) 2024.06.14