[PL/SQL ์ด๋?]
Program language SQL ์ ์ค์๋ง๋ก
์ค๋ผํด์์ ์ฌ์ฉ๋๋ ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค.
์ฟผ๋ฆฌ๋ฌธ์ ์งํฉ์ผ๋ก ๋์์ ์ผ๊ด์ฒ๋ฆฌ ํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฐ์ธ๋ค.
์ ์ฅ ํ๋ก์์ , ํจ์, ํธ๋ฆฌ๊ฑฐ ๋ฑ์ ์์ฑํ ์ ์๋ค.
(์ ์ฐจํSQL ์ฝ๋๋ถ๋ถ๋ง ์ ํํ์ฌ F5๋ก ์ปดํ์ผํด์ ์คํํ๋ค.)
[์ต๋ช
๋ธ๋ก]
set serveroutput on; -- ์ค๋ผํด์์ ์ถ๋ ฅ์ ์ฌ์ฉํจ
DECLARE
๋ณ์
BEGIN
์ฒ๋ฆฌํ ๋ด์ฉ
DBMS_OUTPUT.PUT_LINE(์ถ๋ ฅ๋ฌธ)
END;
declare -- ๋ณ์์ ์ธ๋ถ
begin -- ๋ก์ง ์์
exception -- ์์ธ
end -- ๋ก์ง ์ข
๋ฃ
DBMS_OUTPUT.PUT_LINE(์ถ๋ ฅ๋ฌธ)
[์ฐ์ฐ์]
+, -, /, MOD(), *, **
>, >=, <, <=, =, <>, :=
[DML๋ฌธ์ ์ต๋ช
๋ธ๋ก์์ ์ฌ์ฉํ๊ธฐ]
DDL๋ฌธ์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅ
์ผ๋ฐ์ ์ธSQL๋ฌธ์ select์ ์ ์ฌ์ฉ
ํน์ดํ ์ ์ select์ ์๋์ into ์ ์ ์ฌ์ฉํด ๋ณ์์ ํ ๋น
employees.first_name %TYPE (ํ์
์ ๋ฐ๋ผ๊ฐ๊ฒ ๋ค) : ํ
์ด๋ธ๊ณผ ๊ฐ์ ํ์
์ ์ปฌ๋ผ ๋ณ์๋ฅผ ์ ์ธ
DECLARE
v_emp_name employees.first_name%TYPE;
BEGIN
SELECT first_name
INTO v_emp_name --๋์
์ ์๋ฏธ
FROM employees
WHERE employee_id = 100;
DBMS_OUTPUT.PUT_LINE( v_emp_name || ' - ' || v_dep_name);
END;
[์กฐ๊ฑด๋ฌธ IF]
-- IF ~ THEN
-- ELSIF ~ THEN
-- ELSE ~
-- END IF
DECLARE
NUM1 NUMBER := 5;
NUM2 NUMBER := TRUNC(DBMS_RANDOM.VALUE(1, 11)); -- 1~11๋ฏธ๋ง ๋๋ค์ ์ ์ฅ
BEGIN
IF NUM1 >= NUM2 THEN
DBMS_OUTPUT.PUT_LINE(NUM1 || '์ด ํฐ์ ์
๋๋ค');
ELSE
DBMS_OUTPUT.PUT_LINE(NUM2 || '์ด ํฐ์ ์
๋๋ค');
END IF;
END;
[์กฐ๊ฑด๋ฌธ SWITCH]
-- CASE WHEN ์กฐ๊ฑด THEN
-- WHEN ์กฐ๊ฑด THEN
-- ELSE
-- END CASE;
DECLARE
NUM1 NUMBER := 5;
NUM2 NUMBER := TRUNC(DBMS_RANDOM.VALUE(1, 11)); -- 1~11๋ฏธ๋ง ๋๋ค์ ์ ์ฅ
BEGIN
CASE WHEN NUM1 >= NUM2 THEN
DBMS_OUTPUT.PUT_LINE(NUM1 || '์ด ํฐ์ ์
๋๋ค');
ELSE
DBMS_OUTPUT.PUT_LINE(NUM2 || '์ด ํฐ์ ์
๋๋ค');
END CASE;
END;
[๋ฐ๋ณต๋ฌธ WHILE]
DECLARE
vn_base_num NUMBER := 3;
v_count NUMBER := 1;
BEGIN
WHILE v_count <= 9 -- vn_cnt๊ฐ 9๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ๋ฐ๋ณต์ฒ๋ฆฌ
LOOP
DBMS_OUTPUT.PUT_LINE (vn_base_num || '*' || i || '= ' || vn_base_num * i);
v_count := v_count + 1; -- vn_cnt ๊ฐ์ 1์ฉ ์ฆ๊ฐ
END LOOP;
END;
[๋ฐ๋ณต๋ฌธ FOR]
DECLARE
vn_base_num NUMBER := 3;
BEGIN
FOR i IN 1..9 -- ..์ ๋๊ฐ์
LOOP
DBMS_OUTPUT.PUT_LINE (vn_base_num || '*' || i || '= ' || vn_base_num * i);
END LOOP;
END;
[ํ์ถ๋ฌธ EXIT WHEN ์กฐ๊ฑด , CONTINUE WEHN ์กฐ๊ฑด]