νλ‘μμ λ?
PL/SQLμμ κ°μ₯ λνμ μΈ κ΅¬μ‘°μΈ νλ‘μμ λ κ°λ°μκ° μμ£Ό μ€νν΄μΌ νλ μ 무 νλ¦(SQL)μ
미리 μμ±νμ¬ λ°μ΄ν°λ² μ΄μ€ λ΄μ μ μ₯ν΄ λμλ€κ° νμν λλ§λ€ νΈμΆνμ¬ μ€ν ν μ μλ€.
νλ‘μμ λ νΉμ ν λ‘μ§μ μ²λ¦¬νκ³ κ²°κ³Όλ₯Ό λ°ννμ§ μλλ€.
νλ‘μμ νΉμ§ ν¨ν€μ§ λ΄μμ νλ‘μμ λ μ€λ³΅ μ μ κ°λ₯ ν μ΄λΈμ΄ μμ λμ΄λ μ°κ΄λ νλ‘μμ κ° μμ λλ κ²μ μλλ€ ν μ΄λΈμ΄ μμ λ μνμμ μ°κ΄λ νλ‘μμ λ₯Ό μ€ννλ©΄ μ€λ₯κ° λ°μνλ€. νλ‘μμ μμμ INSERT,UPDATE,DELETEλ¬Έμ μ¬μ©νλ κ²½μ°
μλ COMMIT λμ§ μμΌλ―λ‘ COMMIT; ꡬ문μ μΆκ° ν΄μΌλλ€.
νλ‘μμ μ 보 νμΈ
--νλ‘μμ λͺ©λ‘νμΈ
SELECT * FROM user_procedures;
--μμ‘΄μ± νμΈ
SELECT * FROM user_dependencies;
--μμ€ νμΈ
SELECT * FROM user_source;
νλ‘μμ μμ±
CREATE [OR REPLACE] PROCEDURE νλ‘μμ λͺ
(
(parameter [IN|OUT|IN OUT] λ°μ΄ν°νμ
[:=λν΄νΈ κ°])
)
IS
λ³μ,μμ λ± μ μΈ
BEGIN
μ€νλΆ
[EXCEPTION μμΈ μ²λ¦¬λΆ]
END;
/
- OR REPLACE
- νλ‘μμ κ° μ‘΄μ¬νμ§ μμΌλ©΄ νλ‘μμ λ₯Ό μμ±νλ©°, μ‘΄μ¬νλ©΄ κΈ°μ‘΄ νλ‘μμ λ μ¬μμ±(μμ )νλ€.
- λ§€κ°λ³μ(parameter)
- IN νλΌλ―Έν° :νΈμΆμμ μν΄ νλ‘μμ λ‘ μ λ¬λλ νλΌλ―Έν°μ΄λ©°, 'μ½κΈ°' μ μ©μ κ°μΌλ‘ νλ‘μμ λ μ΄ νλΌλ―Έν°μ κ°μ λ³κ²½ν μ μλ€. (λν΄νΈ λͺ¨λ)
- OUT νλΌλ―Έν° : νλ‘μμ μμ κ°μ λ³κ²½ν μ μκ³ , 'μ°κΈ°' κΈ°λ₯μΌλ‘ νλ‘μμ κ° μ 보λ₯Ό νΈμΆμμκ² λλ €μ£Όλ κΈ°λ₯. OUT νλΌλ―Έν°λ λν΄νΈ κ°μ μ§μ ν μ μλ€.
- IN OUT νλΌλ―Έν° : νλ‘μμ κ° μ½κ³ μ°λ μμ μ λμμ ν μ μλ νλΌλ―Έν°.
- νλΌλ―Έν°λ λ°μ΄ν° νμ λ§ λͺ μνκ³ ν¬κΈ°λ₯Ό μ§μ ν μ μλ€.
νλ‘μμ μ€ν
-- μ€ν νμ
EXEC νλ‘μμ λͺ
[(λ§€κ°λ³μκ°,λ§€κ°λ³μκ°2...)];
-- μ€ν νμ 2
EXEC νλ‘μμ λͺ
(λ§€κ°λ³μλͺ
1=>κ°1,λ§€κ°λ³μλͺ
2=>κ°2...);
'=>' κΈ°νΈλ₯Ό μ¬μ©ν΄ ν΄λΉ λ§€κ°λ³μλͺ
κ³Ό κ°μ μ°κ²°νλ ννλ‘ μ€νν μ μλ€.
νλ‘μμ μμ
DORP PROCEDURE νλ‘μμ λͺ
;
μ¬μ©μ μ μ ν¨μλ?
μ¬μ©μκ° μ§μ λ‘μ§μ ꡬννμ¬ κ΅¬νν ν¨μλ‘ λ΄μ₯ ν¨μ(λΉνΈμΈ ν¨μ)μ²λΌ 쿼리μμ νΈμΆνκ±°λ EXECUTEλ¬Έμ ν΅ν΄ μ€ν ν μ μλ€.
νλ‘μμ λ νΉμ ν λ‘μ§μ μ²λ¦¬νκ³ κ²°κ³Όλ₯Ό λ°ννμ§ μμ§λ§ μ¬μ©μ μ μ ν¨μλ κ²°κ³Όλ₯Ό λ°ννλ€.
ν¨ν€μ§ λ΄μμ μ¬μ©μ μ μ ν¨μλ μ€λ³΅ μ μκ° κ°λ₯νλ€.
ν¨μ μμ±
CREATE [OR REPLACE] FUNCTION ν¨μλͺ
[(parameter λ°μ΄ν° νμ
[,parameter λ°μ΄ν° νμ
...]
)]
RETURN λ°μ΄ν° νμ
IS
λ³μ,μμ λ± μ μΈ
BEGIN
μ€νλΆ
RETURN λ°νκ°;
[EXCEPTION μμΈ μ²λ¦¬λΆ]
END;
- OR REPLACE : μ¬μ©μ μ μ ν¨μκ° μ‘΄μ¬νμ§ μμΌλ©΄ ν¨μλ₯Ό μμ±νλ©°, μ‘΄μ¬νλ©΄ κΈ°μ‘΄ ν¨μλ μ¬μμ±(μμ )νλ€.
- λ§€κ°λ³μ (parameter) : νλΌλ―Έν°λ λ°μ΄ν° νμ λ§ λͺ μνκ³ ν¬κΈ°λ₯Ό μ§μ ν μ μλ€.
- RETURN λ°μ΄ν° νμ : λ°νλλ κ°μ λ°μ΄ν° νμ λ§ λͺ μνκ³ ν¬κΈ°λ₯Ό μ§μ ν μ μλ€.
- RETURN λ°νκ°; : ν¨μλ₯Ό μ€ννκ³ νΈμΆν κ³³μΌλ‘ λ°νν κ°μ λͺ μνλ€.
μ¬μ©μ μ μ ν¨μ νΈμΆ
--λ§€κ° λ³μκ° μλ κ²½μ°
EXEC ν¨μλͺ
λλ ν¨μλͺ
()
--λ§€κ° λ³μκ° μλ κ²½μ°
EXEC ν¨μλͺ
(κ°1,κ°2...)
μ¬μ©μ μ μ μμ
DROP FUNCTION ν¨μλͺ
;
CREATE OR REPLACE FUNCTION fnSum
(
n IN NUMBER
)
RETURN NUMBER
IS
s NUMBER := 0;
BEGIN
FOR i IN 1..N LOOP
s:=s+i;
END LOOP;
RETURN s;
END;
/
--ν¨μ λͺ©λ‘ νμΈ
SELECT * FROM user_procedures;
--ν¨μ κ²°κ³Ό νμΈ
SELECT fnSum(10),fnSum(100) FROM dual;
'π» > ORACLE' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
(29)[ORACLE] 12μΌμ°¨ : PL/SQL - 4 (μμΈμ²λ¦¬) (0) | 2024.03.27 |
---|---|
(29)[ORACLE] 12μΌμ°¨ : PL/SQL - 3 (컀μμ λμ 쿼리) (0) | 2024.03.26 |
(28)[ORACLE] 11μΌμ°¨ : PL/SQL (1) | 2024.03.25 |
[ORACLE] 10μΌμ°¨ : νΈλμμ , ORACLE 12C (1) | 2024.03.22 |
[ORACLE] 9μΌμ°¨ : κ³ κΈμΏΌλ¦¬ (1) | 2024.03.22 |