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 |