λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“š Database/Oracle

[Oracle] ν•¨μˆ˜(Function)λž€? (feat. C.R.U.D)

by Fomagran πŸ’» 2022. 3. 5.
728x90
λ°˜μ‘ν˜•

 

μ•ˆλ…•ν•˜μ„Έμš” Foma πŸ’» μž…λ‹ˆλ‹€!

 

μ˜€λŠ˜μ€ μ—¬λŸ¬ μž‘μ—…μ„ ν•œλ²ˆμ— ν•  수 μžˆλŠ” ν•¨μˆ˜μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~


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

 

λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ ν•¨μˆ˜λŠ” 일반적인 ν”„λ‘œκ·Έλž˜λ°μ—μ„œμ˜ ν•¨μˆ˜μ™€ λ™μΌν•©λ‹ˆλ‹€.

 

λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„ νŠΉμ • 계산(μž‘μ—…)을 μˆ˜ν–‰ν•˜κ³  κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λŠ” ꡬ쑰둜 λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

 

즉, νŠΉμ • λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ 뢀뢄을 μ˜λ―Έν•©λ‹ˆλ‹€.

 

λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ—μ„œλŠ” νŠΉμ • κ°’(λ§€κ°œλ³€μˆ˜)을 μž…λ ₯ λ°›μ•„ μ—¬λŸ¬ 쿼리문을 μž‘μ—…ν•œ λ’€ λ°˜ν™˜ν•˜λŠ” κΈ°λŠ₯을 μ˜λ―Έν•©λ‹ˆλ‹€.

 

(μ–Έλœ» 보기엔 ν”„λ‘œμ‹œμ €μ™€ λ™μΌν•˜λ‹€κ³  λŠλ‚„ 수 μžˆλŠ”λ°μš”. 차이점은 μ—¬κΈ° μ—μ„œ ν™•μΈν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.)


생성

 

CREATE OR REPLACE FUNCTION ν•¨μˆ˜μ΄λ¦„(νŒŒλΌλ―Έν„°1이름 νƒ€μž…, νŒŒλΌλ―Έν„°2이름 νƒ€μž…...)
RETURN λ°˜ν™˜ν• νƒ€μž…
IS
	λ³€μˆ˜ μ„ μ–Έ
BEGIN
	μ‹€ν–‰λ¬Έ μž‘μ„±
	RETURN λ°˜ν™˜ν• κ°’
END;

 

두 개의 숫자λ₯Ό λ°›μ•„ ν•©μ˜ 두배λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜

 

CREATE OR REPLACE FUNCTION SUM_TWICE(n1 NUMBER, n2 NUMBER)
RETURN NUMBER
IS
	twice_sum  NUMBER := 0;
BEGIN
	twice_sum := (n1 + n2)*2;
	RETURN twice_sum;
END;

μ‹€ν–‰

 

μ‹€μ œλ‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ 값을 보면

 

SELECT SUM_TWICE(12,13) ν•©μ˜λ‘λ°°
FROM DUAL;

 

(12+13)*2인 50이 좜λ ₯λœλ‹€.

 


μˆ˜μ •

 

CREATE OR REPLACE ꡬ문을 μ‚¬μš©ν•˜λ©΄ 생성과 λ˜‘κ°™μ΄ μž‘μ„±ν•˜λ©΄ λ©λ‹ˆλ‹€.

 

λ§Œμ•½ ν•΄λ‹Ήλ˜λŠ” ν•¨μˆ˜κ°€ μžˆλ‹€λ©΄ μˆ˜μ •ν•˜κ²Œ 되고, μ—†λ‹€λ©΄ μƒμ„±ν•˜κ²Œ λ©λ‹ˆλ‹€.

 

CREATE OR REPLACE FUNCTION...

쑰회

 

λͺ¨λ“  ν•¨μˆ˜λ“€μ„ μ‘°νšŒν•˜κ³  싢을 λ•Œ μ•„λž˜μ™€ 같이 μž‘μ„±ν•˜λ©΄ λ©λ‹ˆλ‹€.

 

SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION';

 


μ‚­μ œ

 

DROP FUNCTION ν•¨μˆ˜λͺ…;

 

SUM_TWICEλ₯Ό μ‚­μ œν•  λ•Œ μ•„λž˜μ™€ 같이 μž‘μ„±ν•΄μ£Όλ©΄ λ©λ‹ˆλ‹€.

 

DROP FUNCTION SUM_TWICE;
728x90
λ°˜μ‘ν˜•

λŒ“κΈ€