DECLARE
Declarative Section(선언부)
BEGIN
Executable Section(실행부)
EXCEPTION
Exception Handling Section(예외처리부)
END;
Declaractive Section(선언부)
특정 작업을 수행하는, 이름이 있는 PL/SQL BLOCK임
매개변수를 받을 수 있고 반복적으로 사용할 수 있는 BLOCK이다.
보통 연속실행또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL Block을 데이터베이스에 저장하기 위해 생성
CREATE OR REPLACE Procedure name
IN argument
OUT argument
INOUT argument
IS
[변수 선언]
BEGIN -- 필수적으로 들어있어야한다.
[PL/SQL BLOCK]
--- SQL문장, PL/SQL 제어문장
[EXCEPTION] ---선택사항
--error가 발생할때 EXCEPTION 처리를 수행하는 문장
END; ----필수
SQL> CREATE OR REPLACE PROCEDURE update_sal
(v_empno IN NUMBER)
IS
BEGIN
UPDATE emp
SET sal = sal *1.1
WHERE empno = v_empno;
COMMIT;
END update_sal;
/
보통 값을 계산하고 결과 값을 반환하기 위해서 함수를 많이 사용
대부분 구성이 프로시저와 유사하고 그러나 IN파라미터만사용할 수 있다.
반드시 반환될 값의 데이터 타입을 RETURN 문에 선언해야함
또한 PL/SQL블록내에서 RETURN문을 통해서 반드시 값을 반환해야함
CREATE OR REPLCATE FUNCTION 함수명
[(argument..)]
RETURN datatype ---datatype은 반환하는 값이 datatype이다.
IS
[변수 선언 부분]
BEGIN
[PL/SQL Block]
RETURN 변수;
END;
SQL> CREATE OR REPLACE FUNCTION FC_update_sal
(v_empno IN NUMBER)
RETURN NUMBER---리턴되는 변수의 데이터타입을 꼭 정의한다.
IS
v_sal emp.sal%type ----%type변수가 사용됨(스칼라 데이터타입)
BEGIN
UPDATE emp
SET sal= sal * 1.1
WHERE emp_no = v_empno;
COMMIT;
SELECT sal
INTO v_sal
FROM emp
WHERE emp_no=v_empno;
RETURN v_sal
END;
/