본문 바로가기
IT ▶/Data

[PL/SQL 개념] 오라클 PL/SQL PROCEDURE (프로시저), FUNCTION 설명

by 오프로 2020. 1. 11.

 

 

1>   PROCEDURE (프로시저)

 

-       특정 처리 실행하는 서브 프로그램 유형

 

-       다른 프로시저, 오라클 툴, Pro*C 등 호출하여 실행

 

-       컴파일 이후 오브젝트로 데이터베이스 내 저장 이후 호출되면서 실행

 

-       생성 : CREATE PROCEDURE

 

삭제 : DROP PROCEDURE

 

수정 : ALTER PROCEDURE

 

 

<Grammar>

 

CREATE [ OR REPLACE ] PROCEDURE 

procedure name  

IS | AS 변수 선언 

BEGIN PL/SQL BLOCK;

 

-       OR REPLACE : 같은 프로시저명이 있을 경우 기존 프로시저 삭제 후 다시 생성하여 현재 선언한 내용으로 변경

 

-       프로시저명은 중복되지 않게 명명한다.

 

-       Mode

 

IN 모드 : 사용자로부터 값 입력 받아 프로시저로 전달

 

OUT 모드 : 프로시저에서 호출 환경으로 값 전달 역할

 

INPUT 모드 : 매개 변수는 호출 환경과 프로시저 간에 값을 주고 받는 지역변수 사용

 

 

<Example>

 

-- 1. 기본 프로시저 생성

 

CREATE OR REPLACE PROCEDURE 

proc_update IS  

BEGIN 

UPDATE TEAM SET NAME = ‘SON’ WHERE NO = 10; 

END;/ 

-- 프로시저 실행 

EXECUTE proc_update;

 

 

-- 2. 변수 있는 프로시저 생성

 

CREATE OR REPLACE PROCEDURE 

input_update (vmemno IN team.memno%TYPE ) 

IS  BEGIN 

UPDATE TEAM SET NAME = ‘SON’ WHERE memno = vmemno; 

END;/ 

-- 프로시저 실행 

EXECUTE input_update(10);

 

 

 

2>   FUNCTION (함수)

 

 

-       정해진 작업을 수행한 후 결과를 리턴 (프로시저와 비슷하지만 프로시저는 결과값을 반환 안할수도 있다.)

 

-       생성 : CREATE FUNCTION

 

삭제 : DROP FUNCTION

 

수정 : ALTER FUNCTION

 

 

<Grammar>

 

CREATE [ OR REPLACE ] FUNCTION 

function name  변수 선언 

RETURN datatype 

IS | AS 

PL/SQL BLOCK; 

 

RETURN datatype 부분과 같이 프로시저와 다르게 데이터 형 값을 리턴합니다. (반드시 포함)

 

실제 리턴되는 데이터 타입과 여기서 선언한 데이터 타입이 동일

 

-   함수 사용 : Select , Where & Having 조건절, Insert , Update, Connect by, Strat with, Order by, Group by

 

 

<Example>

 

-- 함수 생성

 

CREATE OR REPLACE FUNCTION 

test_function(Ateam_no mem.team_no%TYPE) 

Return number 

IS max_num team.num%type; 

BEGIN

SELECT max(num) INTO max_num
FROM team
WHERE team_no = Ateam_no;

RETRUN max_num; 

END;/

 

 

 

3>   PACKAGE (패키지)

 

 

-       특정처리를 위한 PL/SQL 블록들이 논리적으로 하나의 그룹을 이루는 형태

 

-       프로시저, 함수 등을 묶어서 그룹으로 사용하는 개념

 

-       패키지 구조 : 선언부 + 몸체부

 

 

a.     패키지 선언부 : 프로시저나 함수, 변수 정의 선언

 

CREATE [OR REPLACE] PACKAGE package name 

IS | AS 변수, 커서, 예외 등 선언 (PUBLIC)

서브 프로그램 선언 

END package name; 

 

 

b.     패키지 몸체부 : 선언된 함수나 프로시저 등 실제 구현

 

CREATE [OR REPLACE] PACKAGE BODY package name 

IS | AS 

변수, 커서, 예외 등 선언 (PUBLIC)
서브 프로그램 선언 

END package name;

 

 

오라클 PL/SQL 기본 개념 정리는 아래 내용 참고하시기 바랍니다!!

 

[참고 글]

[IT/Data] - [PL/SQL 개념] 오라클 프로시저 PL/SQL 기본 정리

[IT/Data] - [PL/SQL개념] PL/SQL cursor 커서, Oracle Exception 예외처리

[IT/Data] - [PL/SQL개념] 오라클 프로시저 개념 정리 – (2) PL/SQL 변수, 제어문

 

 

 

728x90
300x250