메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Oracle (토론 | 기여)님의 2025년 5월 13일 (화) 19:16 판 (새 문서: Oracle의 PL/SQL은 Procedural Language extensions to SQL의 약자로, SQL에 절차적 프로그래밍 기능을 추가한 Oracle의 고유한 프로그래밍 언어입니다. SQL은 단순한 질의와 조작에 적합하지만, 복잡한 로직(조건문, 반복문 등)은 어렵기 때문에 이를 보완하기 위해 PL/SQL이 만들어졌습니다. ⸻ PL/SQL 기초 설명 1. 영문 원뜻 • PL/SQL = Procedural Language/Structured Query Language ⸻ 2. 한글 원...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

Oracle의 PL/SQL은 Procedural Language extensions to SQL의 약자로, SQL에 절차적 프로그래밍 기능을 추가한 Oracle의 고유한 프로그래밍 언어입니다.

SQL은 단순한 질의와 조작에 적합하지만, 복잡한 로직(조건문, 반복문 등)은 어렵기 때문에 이를 보완하기 위해 PL/SQL이 만들어졌습니다.

PL/SQL 기초 설명

1. 영문 원뜻 • PL/SQL = Procedural Language/Structured Query Language

2. 한글 원뜻 • SQL에 절차적(조건, 반복 등) 프로그래밍 기능을 추가한 Oracle 전용 언어

3. 특징

항목 설명 블록 구조 BEGIN ~ END 사이에 코드 작성 (중첩 가능) 변수 선언 가능 DECLARE 블록을 통해 변수 사용 제어문 지원 IF, CASE, LOOP, FOR, WHILE 등 지원 예외 처리 EXCEPTION 블록으로 오류 처리 가능 SQL 통합 사용 SQL 문과 함께 프로시저, 함수 등 사용 가능


4. 기본 구조 (PL/SQL 블록)

DECLARE

 -- 변수 선언
 v_name VARCHAR2(50);

BEGIN

 -- 실행부
 SELECT first_name INTO v_name
 FROM employees
 WHERE employee_id = 100;
 DBMS_OUTPUT.PUT_LINE('이름: ' || v_name);

EXCEPTION

 -- 예외 처리
 WHEN NO_DATA_FOUND THEN
   DBMS_OUTPUT.PUT_LINE('데이터 없음');
 WHEN OTHERS THEN
   DBMS_OUTPUT.PUT_LINE('기타 오류 발생');

END;


5. 자주 쓰는 문법

변수 선언

v_salary NUMBER(8,2); v_name VARCHAR2(100);

조건문

IF v_salary > 5000 THEN

 DBMS_OUTPUT.PUT_LINE('고액 연봉자');

ELSE

 DBMS_OUTPUT.PUT_LINE('일반 연봉자');

END IF;

반복문

FOR i IN 1..5 LOOP

 DBMS_OUTPUT.PUT_LINE('반복: ' || i);

END LOOP;

예외 처리

BEGIN

 -- 실행문

EXCEPTION

 WHEN ZERO_DIVIDE THEN
   DBMS_OUTPUT.PUT_LINE('0으로 나눔');
 WHEN OTHERS THEN
   DBMS_OUTPUT.PUT_LINE('기타 예외');

END;


6. 주의사항 • DBMS_OUTPUT.PUT_LINE은 결과를 화면에 출력하는 Oracle 내장 프로시저 (SQL*Plus 또는 SQL Developer에서 SET SERVEROUTPUT ON 필요) • PL/SQL은 오직 Oracle에서만 작동, 다른 DBMS(MySQL, SQL Server 등)에서는 사용 불가

7. 예제 (전체 흐름)

SET SERVEROUTPUT ON;

DECLARE

 v_id NUMBER := 101;
 v_name employees.first_name%TYPE;

BEGIN

 SELECT first_name INTO v_name
 FROM employees
 WHERE employee_id = v_id;
 DBMS_OUTPUT.PUT_LINE('직원 이름: ' || v_name);

EXCEPTION

 WHEN NO_DATA_FOUND THEN
   DBMS_OUTPUT.PUT_LINE('직원이 존재하지 않습니다.');

END;


PL/SQL 프로시저 / 함수 만드는 법

커서(Cursor) 사용법

예외처리 고급 예시