Daily coding
Oracle day 8 - PL : FUNCTION 함수 본문
FUNCTION
매개변수, RETURN값이 반드시 있음
SELECT구문에서 많이 사용함
1. 생성 및 호출하기
CREATE OR REPLACE FUNCTION func( p_val IN NUMBER)
-- 함수명 ( 매개변수명 IN 자료형 )
RETURN NUMBER
-- 리턴하는 변수의 타입을 적는다
IS
v_val NUMBER;
-- 매개변수를 대입하여 연산을 처리할 변수
BEGIN
v_val := p_val *2;
RETURN v_val;
END;
/
-- 호출하기: 함수는 EXEC로 호출 못하고 select문에서 사용가능 또는 변수 생성해서 호출
SELECT func(10)
FROM DUAL;
SET SERVEROUTPUT ON;
-- 서버아웃풋 키기
< 예제 1 >
-- 세율구하는 함수
CREATE OR REPLACE FUNCTION tax(p_val IN NUMBER) RETURN NUMBER IS
BEGIN
RETURN (p_val * 0.15);
-- 리턴할 값을 적어줌
END;
/
-- DUAL 테이블로 확인하기
SELECT tax(1000) FROM DUAL;
< 예제 2 >
-- 급여와 커미션을 합쳐서 세금을 계산
CREATE OR REPLACE FUNCTION tax2 (p_sal IN employees.salary%TYPE,
p_bonus IN employees.commission_pct%TYPE)
RETURN NUMBER
IS
BEGIN
RETURN ( (p_sal + NVL(p_bonus,0) * p_sal) *0.15) ;
END;
/
-- 호출하기
SELECT first_name, salary + salary * NVL(commission_pct,0) 실급여,
tax2 ( salary, commission_pct) 세금
FROM employees;
< 예제 3 >
-- 사원번호를 입력하면 업무명을 취득할 수 있는 함수
CREATE OR REPLACE FUNCTION getJobName ( p_empno IN employees.employee_id%TYPE)
RETURN VARCHAR2
IS
v_jobname jobs.job_title%TYPE;
BEGIN
SELECT j.job_title INTO v_jobname
FROM employees E, jobs J
WHERE e.job_id = j.job_id
AND p_empno = e.employee_id;
RETURN v_jobname;
END;
/
SELECT getjobname(100)
FROM DUAL;
-- 변수 만들어 출력해보기
VAR name VARCHAR2(20);
EXECUTE :name := getjobname(100);
PRINT name;
-- : (콜론)이 변수 앞에도 들어가야 정상작동된다.
* 원하는 결과(데이터를) 얻어올 때 쉽게 할 수 있는 방법이 함수 (Function)
'DB > Oracle' 카테고리의 다른 글
Oracle day 8 - PL : function 예제 (0) | 2019.12.20 |
---|---|
Oracle day 8 - PL : 프로시저 & 스크립트 문제 (0) | 2019.12.20 |
Oracle day 8 - PL : Procedure 프로시저 문 & Cursor 커서 (0) | 2019.12.20 |
Oracle day 7 - PL ( Procedural Language) : 기본문법 및 Script 구조, VArray, (0) | 2019.12.19 |
Oracle day 7 - Index 인덱스 (0) | 2019.12.19 |