본문 바로가기

DB관련/oracle

서브 프로그램 - 내장함수(FUNCTION)

A>선언

CREATE FUNCTION 이름

[

     파라미터

]

RETURN 데이터 타입

IS 

PL/SQL블록

 

B>수정

DROP FUNCTION 으로 삭제

ALTER FUNCTION 으로 수정

 

C>예시

 

1.예시

CREATE OR REPLACE FUNCTION s_max_sal

return number
IS 

 max_sal emp.sal%TYPE;

BEGIN
    SELECT max(sal) INTO max_sal

    (s_deptno emp.deptno%TYPE)
    FROM emp
    WHERE deptno = s_deptno;
    RETURN max_sal; --3번째 줄의 리턴타입과 같아야한다.
END;    
/

--결과 출력
SELECT s_max_sal(10) FROM dual;

 

2)예시2

 

CREATE OR REPLACE FUNCTION count_men
(count NUMBER) 
return NUMBER
is 
max_count NUMBER
BEGIN
SELECT COUNT(*) INTO max_count
FROM emp    
WHERE deptno=count;
RETURN max_count;
END;

/

 

결과출력

SELECT DISTINCT deptno, count_mem(deptno)  FROM emp;

 

3)예시3

CREATE OR REPLACE FUNCTION f_dname
(v_empno IN emp.empno%TYPE)
return varchar2 --함수의 리턴 타입
IS
    v_dname dept.dname%TYPE;
BEGIN
    SELECT dname INTO v_dname
    FROM dept 
    WHERE deptno = (SELECT deptno FROM emp WHERE empno= v_empno);
    RETURN v_dname;  --함수의 결과
END;

 

D>  함수의 조회

딕셔너리에서 조회

SELECT text FROM user_source WHERE type='FUNCTION' 
AND name='S_MAX_SAL';

'DB관련 > oracle' 카테고리의 다른 글

서브 프로그램 4 - 트리거 (TRIGGER)  (0) 2021.01.21
서브 프로그램 3 - 패키지 (ORACLE PACKAGE)  (0) 2021.01.21
서브 프로그램 - 프로시져(PROCEDURE)  (0) 2021.01.21
예외와 예외처리  (0) 2021.01.21
PL/SQL -4 CURSOR  (0) 2021.01.21