프로시저(Procedure)란?
특정 작업을 수행 하는, 이름이 있는 PL/SQL BLOCK 이다.
매개 변수를 받을 수 있고, 반복적으로 사용 할 수 있는 BLOCK이다.
보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL BLOCK을 데이터 베이스에 저장하기 위해 생성 한다.
프로시저 문법
------------------------------------------------------------
CREATE OR REPLACE procedure name
IN argument
OUT argument
IN OUT argument
IS
[변수의 선언]
BEGIN --> 필수
[PL/SQL Block]
-- SQL문장, PL/SQL제어 문장
[EXCEPTION] --> 선택
-- error가 발생할 때 수행하는 문장
END; --> 필수
----------------------------------------
-CREATE OR REPLACE 구문을 사용하여 생성 한다.
-IS로 PL/SQL의 블록을 시작 한다.
-LOCAL 변수는 IS BEGIN 사이에 선언 한다.
프로시저 예제
-----------------------------------------------------------------
-- 프로시저의 이름은 update_sal이다
-- update_sal 프로시저는 사번을 입력받아 급여를 인상 한다.
-- 프로시저를 끝마칠 때에는 항상 "/"를 지정 한다.
SQL> CREATE OR REPLACE PROCEDURE update_sal
/* IN Parameter */
(v_empno IN NUMBER)
IS
BEGIN
UPDATE emp
SET sal = sal * 1.1
WHERE empno = v_empno;
COMMIT;
END update_sal;
/
------------------------------------------------------------------
프로시저 실행예제
SQL>EXCECUTE update_sal(7369)
PL/SQL처리가 정상적으로 완료되었습니다
함수(Function)란?
-보통 값을 계산하고 결과 값을 반환하기 위해서 함수를 많이 사용 한다.
대부분 구성이 프로시저와 유사 하지만 IN 파라미터만 사용 할 수있다.
반드시 반환 될 값의 데이터 타입을 RETURN문에 선언해야 한다.
도한 PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 한다.
함수문법
-- PL/SQL 블록에는 적어도 한 개의 RETURN 문이 있어야 한다.
-- PL/SQL Block은 함수가 수행 할 내용을 정의한 몸체부분이다.
CREATE OR REPLACE FUNCTION function name
[(argument...)]
RETURN datatype
-- datatype은 반환되는 값의 datatype입니다.
IS
[변수 선언 부분]
BEGIN
[PL/SQL Block]
-- 리턴문이 꼭 존재해야 합니다
RETURN 변수;
END;
-------------------------------------------
함수 실행 예제
-- 먼저 함수의 반환값을 저장 할 변수 선언.
SQL> VAR salary NUMBER;
-- EXECUTE 문을 이용해 함수를 실행합니다.
SQL>EXECUTE :salary := FC_update_sal(7900);
-- PRINT문을 사용하여 출력
SQL>PRINT salary;
SALARY
----------
1045
-- 아래와 같이 SELECT문장에서도 사용 할 수 있다.
SQL> SELECT ename, FC_update_sal(sal) FROM emp;
END; --> 필수 D update_sal;
/ D update_sal;
/ D update_sal;
/ D update_sal;
/
[출처]http://www.gurubee.net/lecture/1042
'SW > Database' 카테고리의 다른 글
Oracle Backup And Recovery (오라클 백업, 복구) 개념 및 정의 (0) | 2020.05.06 |
---|---|
[Oracle] 테이블스페이스 생성, 유저 생성, 유저 권한주기 (0) | 2019.05.10 |
ORACLE_PL/SQL (0) | 2017.02.14 |
ORACLE_시스템권한, 객체권한, 사용자생성 (0) | 2017.02.14 |
ORCLE_객체(인덱스,뷰,시노님) (0) | 2017.02.14 |