λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’š 개발/λ°μ΄ν„°λ² μ΄μŠ€

[λ°μ΄ν„°λ² μ΄μŠ€] ν•¨μˆ˜(function)와 ν”„λ‘œμ‹œμ €(procedure)의 차이

by devshin.kr 2021. 7. 15.
728x90

μ˜€λΌν΄μ„ μ‚¬μš©ν•˜λ‹€λ³΄λ©΄ 자주 μ ‘ν•˜κ²Œ λ˜λŠ” ν”„λ‘œμ‹œμ €μ™€ ν•¨μˆ˜.

​

이 λ‘˜μ˜ μ •μ˜μ™€ 차이점에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

 

 

ν”„λ‘œμ‹œμ €(Procedure)λž€?

넓은 μ˜λ―Έλ‘œλŠ” μ–΄λ–€ 업무λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ 절차λ₯Ό λœ»ν•œλ‹€.

​

예λ₯Ό λ“€μ–΄ μ‡Όν•‘λͺ°μ—μ„œ μ‹ λ°œμ„ κ΅¬λ§€ν•˜λŠ” ν”„λ‘œμ‹œμ €λ‘œ ν‘œν˜„ν•΄λ³Έλ‹€λ©΄

[ Procedure Start ]

β‘  μ‡Όν•‘λͺ° νšŒμ› 둜그인

β‘‘ ꡬ맀할 μ‹ λ°œ 선택

β‘’ κ°œμΈμ •λ³΄ 및 배솑지 선택

β‘£ 결제

[ Procedure End ]

 

μœ„ 처럼 μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό 절차적으둜 κΈ°μˆ ν•΄ 놓은 것을 ν”„λ‘œμ‹œμ €λΌ ν•œλ‹€.

 

 

ν”„λ‘œμ‹œμ € 문법

CREATE OR REPLACE PROCEDURE ν”„λ‘œμ‹œμ € 이름
     ( λ§€κ°œλ³€μˆ˜λͺ…1 [ IN || OUT || INOUT ] λ°μ΄ν„°νƒ€μž…,
       λ§€κ°œλ³€μˆ˜λͺ…2 [ IN || OUT || INOUT ] λ°μ΄ν„°νƒ€μž… ... )
IS||AS
       λ³€μˆ˜, μƒμˆ˜ λ“± μ„ μ–Έ ( μ„ μ–ΈλΆ€ )
BEGIN
       μ‹€ν–‰ λ¬Έμž₯ ( μ‹€ν–‰λΆ€ )
       EXCEPTION λ¬Έμž₯   //ν•„μˆ˜μ•„λ‹˜
END ;

 

 

ν”„λ‘œμ‹œμ € 예제

//μ‚¬λ²ˆμ„ μž…λ ₯λ°›μ•„ κΈ‰μ—¬λ₯Ό μΈμƒν•˜λŠ” update_sal ν”„λ‘œμ‹œμ €
CREATE OR REPLACE PROCEDURE update_sal
     ( v_empno IN NUMBER )
IS
BEGIN
       UPDATE emp
       SET sal = sal * 1.1
       WHERE empno = v_empno;
END update_sal;

 

 

 

 

 

ν•¨μˆ˜(Function)λž€?

μœ„μ˜ ν”„λ‘œμ‹œμ €μ˜ κ° ν”„λ‘œμ„ΈμŠ€λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ κΈ°λŠ₯듀을 ν•¨μˆ˜λΌ ν•œλ‹€.

​

예λ₯Ό λ“€μ–΄ μ‡Όν•‘λͺ°μ˜ 둜그인기λŠ₯ 쀑 ID와 PWλ₯Ό μ²΄ν¬ν•˜λŠ” κΈ°λŠ₯등을 ν•¨μˆ˜λΌ 보면 λœλ‹€.

​

κ°„ν˜Ή "ν•¨μˆ˜λŠ” 리턴값을 κ°–λŠ” ν”„λ‘œμ‹œμ €μ΄λ©° ν”„λ‘œμ‹œμ €λŠ” 리턴값이 μ—†λ‹€"라고 μƒκ°ν•˜μ‹œλŠ” 뢄듀이 μžˆλŠ”λ° μ΄λŠ” λͺ…λ°±νžˆ ν‹€λ¦° μ •μ˜μ΄λ‹€.

​

μ΄μœ λŠ” ν•¨μˆ˜λ‚˜ ν”„λ‘œμ‹œμ €λ‚˜ κ΅¬μ‘°μ μœΌλ‘œλŠ” λ™μΌν•˜λ©° ν”„λ‘œμ‹œμ €λ„ 리턴값을 κ°€μ§ˆμˆ˜ 있기 λ•Œλ¬Έμ΄λ‹€.

​

 

ν•¨μˆ˜ 문법

CREATE OR REPLACE FUNCTION ν•¨μˆ˜ 이름
     ( λ§€κ°œλ³€μˆ˜λͺ…1 λ§€κ°œλ³€μˆ˜1νƒ€μž…,
       λ§€κ°œλ³€μˆ˜λͺ…2 λ§€κ°œλ³€μˆ˜2νƒ€μž… ... )
RETURN λ°μ΄ν„°νƒ€μž…
IS||AS
       λ³€μˆ˜, μƒμˆ˜ λ“± μ„ μ–Έ ( μ„ μ–ΈλΆ€ )
BEGIN
       μ‹€ν–‰ λ¬Έμž₯ ( μ‹€ν–‰λΆ€ )
       RETURN λ°˜ν™˜κ°’    //ν•„μˆ˜
       EXCEPTION λ¬Έμž₯   //ν•„μˆ˜μ•„λ‹˜
END ;

 

 

ν•¨μˆ˜ 예제

//λ‚ μ§œλ₯Ό μž…λ ₯ν•˜λ©΄ YYYY-MM-DD ν˜•νƒœλ‘œ λ°”κΏ”μ£ΌλŠ” ν•¨μˆ˜
CREATE OR REPLACE FUNCTION testDate ( date Date )
RETURN VARCHAR2
IS
       changeDate VARCHAR2 ( 20 ) ;
BEGIN 
       changeDate := NULL ;
       changeDate := TO_CHAR ( date, 'YYYY-MM-DD' ) ;
       RETURN changeDate ;
END ;

 

 

 

 

κ·Έλ ‡λ‹€λ©΄ ν”„λ‘œμ‹œμ €μ™€ ν•¨μˆ˜λŠ” 무슨 차이가 μžˆλŠ”κ°€?

ν”„λ‘œμ‹œμ €(Procedure)와 ν•¨μˆ˜(Function)의 차이

 

 

좜처: https://mjn5027.tistory.com/47

 

[ Oracle ] ν”„λ‘œμ‹œμ €μ™€ ν•¨μˆ˜μ˜ 차이

μ˜€λΌν΄μ„ μ‚¬μš©ν•˜λ‹€λ³΄λ©΄ 자주 μ ‘ν•˜κ²Œ λ˜λŠ” ν”„λ‘œμ‹œμ €μ™€ ν•¨μˆ˜. ​ 이 λ‘˜μ˜ μ •μ˜μ™€ 차이점에 λŒ€ν•΄ μ•Œμ•„λ³΄μž. ν”„λ‘œμ‹œμ €(Procedure)λž€? 넓은 μ˜λ―Έλ‘œλŠ” μ–΄λ–€ 업무λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ 절차λ₯Ό λœ»ν•œλ‹€. ​ 예λ₯Ό

mjn5027.tistory.com

 

λŒ“κΈ€