[PL/SQL] Day2 - 함수 / 루프 / 예외 / 커서 / 패키지

윤수인·2023년 12월 22일
0

📒국비학원 [DB]

목록 보기
11/14
post-thumbnail

오라클에서 대입방식 := (= 아님)

함수 (FUNCTION)

  • 함수 (Function) : 리턴값 반환 o
CREATE OR REPLACE PROCEDURE 함수명
(1 (IN) 데이터타입,2 (IN) 데이터타입,,)
RETURN 리턴값 타입
IS
리턴값명 리턴값 타입
BEGIN
서식(EX,1:=1+2;)
RETURN 리턴값명;
END;
a.반환값

💻 작업

1. FUNCTION 함수


부피값 구하기

  • BUPI NUMBER; -- 반환값으로 부피에 있는 값을 반환할거고 그 값이 NUMBER형태다

제주도에 사는 사람 중 날짜 마지막

제주도에 사는 사람 중 이름(뒤에서 두번째부터 끝까지) 출력

  • STR:=SUBSTR(NAME,-2); --뒤에서 -2하고 끝까지 출력 (성빼고 이름만) / 범위지정하고싶으면 (NAME,0,0)

사용자가 오늘까지 일한 년/개월수 구하기

  • FLOOR - 버림
    /12 -> 년도가 나옴
  • 년이 나오는데 찌꺼기 MOD가 나옴 => MOD 개월

주민번호 주면 성별 구분해주는 함수

  • GENDER:=SUBSTR(V_JUMIN,8,1)
    8번째 자리에 1개의 문자 가져오기 - > 986084- X로 비교하기
  • PL/SQL에서도 IF문 가능
  • ELSIF = ELSEIF문과 같음

계약날짜 구하기

연봉 등급 매기기

2. 루프 LOOP (FOR문)

LOOP

  • TABLE - LOOP1 생성

  • 프로시저 생성

  • 위에 프로시저 사용해서

    ✏️ [for문] - 1..20번까지 LOOP


✏️ 1부터 100까지의 합 출력하기


3. 예외처리 EXCEPTION

  • 예외처리 : EXCEPTION

✏️ 예외처리 사용해서 사원정보 불러오기


  • TABLE - EMP2만들어서 PRIMARY KEY 확인해보기

✏️ 같은 값 실행했을 때 출력하기 (예외처리 이용)

  • 이름값 미지정

✏️ 프로시저 - 데이터타입 지정해서 출력하기 (예외처리 이용)

  • 이름 데이터타입 지정해주기

✏️ 프로시저 - UPDATE 하기 (예외처리 이용)


✏️ 내가 만든 예외처리

4. 커서만들기 CURSOR

: SELECT한 TABLE들을 바로 집어넣어서 출력할 수 있게 하는 명령어

⭐ 정석 ver.

✏️ 부서번호를 비교해서 부서번호,사원명,직급,급여 출력하기

  • 커서 변수 (이미 있는거임) : %NOTFOUND / %ROWCOUNT

⭐ For문 사용 ver.

✏️ 부서번호를 비교해서 부서번호,사원명,직급,급여 출력하기


✏️ 사원번호를 입력했을 때, 사원의 이름과 구입한 제품명을 출력

  • SALES / (CUSTOM) (TABLE) => JOIN문으로 묶기

✏️ 사원번호를 입력했을 때, 사수번호,사수명,사원번호,사원명을 출력

  • SELFJOIN문


5. 패키지 PACKAGE

패키지 : PACKAGE

  • 위에서 만든 프로시져를 여러개를 묶어서 하나로 사용하는 법

✏️ PACKAGE 만들기

  • 패키지 여러가지 만듦

✏️ PACKAGE BODY 만들기

  • 커서 + FOR문 사용

profile
어제보다 조금 더 성장하기!

0개의 댓글