
CREATE [OR REPLACE] FUNCTION function_name [(
argument...
)] RETURN datatype -- 반환되는 값의 datatype
IS [AS]
[선언부]
BEGIN
[실행부 - PL/SQL Block]
[EXCEPTION]
[EXCEPTION 처리]
RETURN 변수; -- 리턴문 필수 END;
END;
[OR REPLACE] : 기존 내용을 재생성한다. 보통 생략하지 않고 같이 사용한다.
argument : 변수명 (변수명 IN VARCHAR2)의 형식으로 이름과 타입을 지정한다.
CREATE OR REPLACE FUNCTION fu_sum_gugu( vn_row NUMBER )
RETURN NUMBER
IS
vn_gugu_sum NUMBER := 0;
BEGIN
FOR i in 1..9
LOOP
vn_gugu_sum := vn_gugu_sum + (vn_row * i);
END LOOP;
RETURN vn_gugu_sum;
END;
간단한 구구단 예시이다. 단 번호를 넘겨주면 해당 단의 합계를 반환한다.
SELECT fu_sum_gugu(1) FROM dual;
함수 => 매개변수 존재 / 반환값 존재
프로시져 => 매개변수 존재 / 반환값 없음함수는 기본적으로 SQL문 안에서 사용해야 한다.
CREATE OR REPLACE PROCEDURE 프로시저 이름
( 매개변수명1[ IN | OUT | IN OUT ] 데이터타입[:= 디폴트값],
매개변수명2[ IN | OUT | IN OUT ] 데이터타입[:= 디폴트값], ... )
IS[AS]
변수, 상수 등 선언
BEGIN
실행
[EXCEPTION 예외처리부]
END [프로시저 이름]
EXEC (혹은 EXECUTE) 프로시저명 (매개변수1 값... 매개변수2 값...)
return 문을 사용하면 프로시저의 실행을 해당 시점에서 종료 시킬 수 있다. 조건문으로 분기시켜 로직을 수행할때 자주 사용한다.