주니어 기초 코딩공부/Database 기초

21장 저장 함수 사용하기 (SQL 오라클)

jju_developer 2022. 12. 22. 14:55
728x90

✔ 목차

  • 저장함수 사용하기
  • [실습] 저장함수 작성하기 1
  • [실습] 저장함수 작성하기 2

 

지난 시간 저장프로시저 확인하기

==> https://jju240.tistory.com/103

 

21장 저장 프로시저, 저장 함수, 커서, 트리거 개념 및 예제 (SQL 오라클)

✔ 저장 프로시저 (STORED PROCEDURE)? 오라클은 사용자가 만든 PL/SQL 문을 데이터베이스에 저장할 수 있도록 저장 프로시저(stored procedure)라는 것을 제공합니다. 이렇게 저장 프로시저를 사용하면 복

jju240.tistory.com

 

✔ SQL 저장함수 사용하기

저장함수는 저장 프로시저와 거의 유사한 용도로 사용합니다.

저장 프로시저의 내용은 위 링크에서 확인해주세요~!

 

저장함수 (Stored function)는 프로시저와 다르게 함수를 만들 때 FUNCTION이라 기술합니다.

저장 프로시저와 차이점이라곤 함수는 실행 결과를 되돌려 받을 수 있다는 점입니다.

함수는 결과를 되돌려 받기 위해서 함수가 되돌려 받게 되는 자료형과 되돌려 받을 값을 기술해야 합니다.

 

create or replace function 함수이름(매개변수1 데이터타입, 매개변수2 데이터타입, ...)
 return 데이터타입
is
 지역변수 데이터타입;
begin
 실행문;
 return 반환값;
end;
/
-- 실행
variable 바인드변수 데이터타입;
execute :바인드변수 := 함수이름(argument_list);

 

✔ [실습] 저장함수 작성하기 1

 특별 보너스를 지급하기 위한 저장 함수를 작성해 봅시다.

보너스는 급여의 200%를 지급한다고 가정해 보겠습니다.

(실습파일: PROC04.SQL)

--<저장함수 만들기 입니다!!>
CREATE OR REPLACE FUNCTION CAL_BONUS(VEMPNO IN EMP.EMPNO%TYPE )
 RETURN NUMBER
IS
 VSAL NUMBER(7, 2);
BEGIN
 SELECT SAL INTO VSAL
 FROM EMP
 WHERE EMPNO = VEMPNO;
 RETURN (VSAL * 2); 
END;
/

CREATE FUNCTION을 활용하고 저장함수의 이름은 CAL_BONUS입니다~!!

 

부서 번호가 서로 같다고 가정할 때 EMP의 급여를 VSAL에 저장하였습니다.

RETURN은 저장함수에서 필수죠?

RETURN 할 때 급여의 *2를 하겠습니다.

 

우선 이렇게 저장된 함수를 사용하기 전 변수를 선언하겠습니다.

-- VAR_RES 변수 선언
VARIABLE VAR_RES NUMBER;

--CALL 저장함수에 매개값 주고 변수에 담기
EXECUTE :VAR_RES :=CAL_BONUS(7788);

--PRINT 저장함수가 담긴 변수 출력
PRINT VAR_RES

저장된 함수 CALL_BONUS에 누구의 급여에 보너스를 줄지 정하고 괄호 안에

해당되는 사번을 넣습니다.

저는 7788 사번에게 보너스를 부여하였고 그걸 방금 선언한 VAR_RES에 담았습니다.

 

출력을 할 때에는 PRINT VAR_RES를 하면 자동으로 계산해서 RETURN 합니다!!

 

 

 

 

✔ [실습] 저장함수 작성하기 2

 사원명으로 검색하여 해당 사원의 직급을 얻어 오는 저장 함수를

SEL_EMPNAME02라는 이름으 로 작성하라.

(실습파일: CH21_QUIZ_02.SQL)

--실습2번 저장함수 생성 이름: SEL_EMPNAME02
CREATE OR REPLACE FUNCTION SEL_EMPNAME02(VNAME IN EMP.ENAME%TYPE)
    RETURN VARCHAR2
IS
VJOB VARCHAR2(9);
BEGIN
--실행문
SELECT JOB INTO VJOB
FROM EMP
WHERE ENAME = VNAME;
RETURN (VJOB);
END;
/

--저장함수 담을 변수 생성
VARIABLE V_JOB VARCHAR2(9);

--변수에 저장함수 담기
EXECUTE :V_JOB:=SEL_EMPNAME02('SCOTT');

--담기 변수 출력하기
PRINT V_JOB

결과

 

 

지금까지 저장함수에 대한 설명이었습니다!

 

궁금하신 점은 댓글 주세요~

 

감사합니다.

 

 

 

 

21장 저장 프로시저, 저장 함수, 커서, 트리거 개념 및 예제 (SQL 오라클)

✔ 저장 프로시저 (STORED PROCEDURE)? 오라클은 사용자가 만든 PL/SQL 문을 데이터베이스에 저장할 수 있도록 저장 프로시저(stored procedure)라는 것을 제공합니다. 이렇게 저장 프로시저를 사용하면 복

jju240.tistory.com

 

728x90