DECLARE
-- 변수를 선언하는 부분
BEGIN
-- 실제로 실행할 코드를 작성하는 부분
EXCEPTION
-- 오류가 발생했을 때 처리하는 부분
END;
/
이것이 PL/SQL의 기본 뼈대입니다. 마치 우리가 요리 레시피를 쓰는 것처럼, 준비물(DECLARE), 조리과정(BEGIN), 실수했을 때 대처방법(EXCEPTION)으로 구성됩니다.
DECLARE
-- 변수_이름 변수_타입;
이름 VARCHAR2(50); -- 문자를 저장하는 변수
나이 NUMBER := 25; -- 숫자를 저장하는 변수
급여 NUMBER DEFAULT 1000; -- 기본값이 1000인 숫자 변수
BEGIN
이름 := '홍길동'; -- 변수에 값 저장하기
-- 화면에 출력하기
DBMS_OUTPUT.PUT_LINE('이름: ' || 이름);
END;
/
변수는 우리가 데이터를 임시로 보관하는 상자라고 생각하면 됩니다.
-- 만약 급여가 3000 이상이면 '고액연봉', 아니면 '일반연봉' 출력
IF 급여 >= 3000 THEN
DBMS_OUTPUT.PUT_LINE('고액연봉');
ELSE
DBMS_OUTPUT.PUT_LINE('일반연봉');
END IF;
IF문은 특정 조건에 따라 다른 작업을 수행할 때 사용합니다.
-- 1부터 5까지 숫자 출력하기
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE('숫자: ' || i);
END LOOP;
같은 작업을 여러 번 반복할 때 사용합니다.
DECLARE
-- 직원정보를 가져오는 커서 선언
CURSOR 직원커서 IS
SELECT 이름, 급여 FROM 직원테이블;
직원정보 직원커서%ROWTYPE; -- 커서의 데이터를 담을 변수
BEGIN
-- 커서 열기
OPEN 직원커서;
-- 데이터 하나씩 가져오기
LOOP
FETCH 직원커서 INTO 직원정보;
EXIT WHEN 직원커서%NOTFOUND; -- 더 이상 데이터가 없으면 종료
-- 각 직원의 정보 출력
DBMS_OUTPUT.PUT_LINE('이름: ' || 직원정보.이름 ||
', 급여: ' || 직원정보.급여);
END LOOP;
-- 커서 닫기
CLOSE 직원커서;
END;
/
커서는 데이터베이스에서 여러 데이터를 하나씩 가져와서 처리할 때 사용합니다.
DECLARE
결과 NUMBER;
BEGIN
결과 := 100/0; -- 0으로 나누기(오류 발생)
EXCEPTION
WHEN ZERO_DIVIDE THEN
-- 0으로 나눌 때 오류 처리
DBMS_OUTPUT.PUT_LINE('0으로 나눌 수 없습니다!');
WHEN OTHERS THEN
-- 그 외 모든 오류 처리
DBMS_OUTPUT.PUT_LINE('오류가 발생했습니다!');
END;
/
프로그램 실행 중 발생할 수 있는 오류를 처리하는 방법입니다.
-- 직원의 연봉을 계산하는 프로그램
DECLARE
v_월급 NUMBER := 3000000;
v_연봉 NUMBER;
v_보너스 NUMBER := 500000;
BEGIN
-- 연봉 계산 (월급 * 12 + 보너스)
v_연봉 := (v_월급 * 12) + v_보너스;
-- 결과 출력
DBMS_OUTPUT.PUT_LINE('연봉 계산 결과');
DBMS_OUTPUT.PUT_LINE('----------------');
DBMS_OUTPUT.PUT_LINE('월급: ' || v_월급 || '원');
DBMS_OUTPUT.PUT_LINE('보너스: ' || v_보너스 || '원');
DBMS_OUTPUT.PUT_LINE('연봉: ' || v_연봉 || '원');
END;
/