본문 바로가기

Oracle

PL/SQL - 02(프로시저와 함수)

이전 글에서 스토어드 프로시저에 대해 간략하게 언급했는데 이번 글에서 다시 한번 자세하게 공부해보겠습니다

프로시저

- 특정 작업을 수행하며, 이름이 있는 PL/SQL 블록으로, 매개 변수를 받으며 반복적으로 사용할 수 있습니다.

보통 연속 실행, 구현이 복잡한 트랜잭션을 수행하는 블록을 db에 저장하기 위해 생성합니다.

문법

- CREATE OR REPLACE 구문을 사용하여 생성

- IS로 PL/SQL의 블록 시작

- LOCAL 변수는 IS와 BEGIN 사이에 선언

CREATE OR REPLACE procedure name
	IN arg
    OUT arg
    IN OUT arg
IS
	variable 선언
BEGIN -- 필수
    PL/SQL Block
    -- SQL문장, PL?SQL 제어 문장
    EXCEPTION -- 선택
    -- error 발생 시 수행 문장
END; -- 필수

프로시저의 실행을 우해서는 EXECUTE 문을 이용해 실행합니다.

execute procedure name;

Parameter

- 실행 환경과 program 사이에 값을 주고받는 역할

- 블록 안에서의 변수와 똑같이 일시적으로 값을 저장하는 역할

- Parameter 타입

IN : 실행 환경에서 program으로 값을 전달

OUT : program 에서 실행환경으로 값을 전달

INOUT : 실행환경에서 program 으로 값을 전달하고, 다시 program에서 실행환경으로 변경된 값을 전달

※ 만약 제가 JAVA application을 개발하고 있고 Oracle DB를 사용하고 있다면 JAVA App이 실행환경이 될 것이고 program이 Oracle DB가 될 것입니다.

Block Type( PL/SQL Block 유형)

 

 

3가지로 block type을 구분할 수 있으며 순차적으로 보겠습니다.

Anonymous Block(익명 블록)

이름이 없는 블록으로, 실행하기 위해 프로그램 안에서 선언되고 실행 시에는 실행을 위해 PL/SQL 엔진으로 전달됩니다.

Procedure(프로시저)

특정 작업을 수행할 수 있는 이름이 있는 PL/SQL 블록으로서 복잡한 트랜잭션을 수행하는 블록을 DB에 저장하기 위해 사용됩니다.

Fucntion(함수)

값을 계산하고 결과 값을 반환하기 위해 함수를 많이 사용합니다. 구성은 프로시저와 유사하지만 in 파라미터만 사용 가능하고, 반드시 반환될 값의 데이터 타입을 return문에 선언해야 합니다.

또한 pl/sql 블록 내에서 return문을 통해 반드시 값을 반환해야 합니다.

* 이 포스팅은 아래 출처의 내용을 개인적인 공부를 위해 정리한 내용입니다.

출처 : http://www.gurubee.net/oracle/plsql

 

Oracle PL/SQL 강좌

 

www.gurubee.net

'Oracle' 카테고리의 다른 글

PL/SQL - 06(Cursor)  (0) 2020.03.16
PL/SQL - 05 (SQL문)  (2) 2020.03.16
PL/SQL - 04(테이블/레코드)  (0) 2020.03.16
PL/SQL - 03(데이터 타입)  (0) 2020.03.16
PL/SQL - 01(기초 개념)  (0) 2020.03.16