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


SQL은 단순한 질의와 조작에 적합하지만, 복잡한 로직(조건문, 반복문 등)은 어렵기 때문에 이를 보완하기 위해 PL/SQL이 만들어졌습니다.
=== PL/SQL 기초 ===
* Oracle의 PL/SQL은 Procedural Language extensions to SQL의 약자로, SQL에 절차적 프로그래밍 기능을 추가한 Oracle의 고유한 프로그래밍 언어입니다.
* SQL은 단순한 질의와 조작에 적합하지만, 복잡한 로직(조건문, 반복문 등)은 어렵기 때문에 이를 보완하기 위해 PL/SQL이 만들어졌습니다.


{{요점
 
|내용= PL/SQL 기초 설명
PL/SQL 기초 설명
*  (영문)PL/SQL = Procedural Language/Structured Query Language
 
*  (한글) SQL에 절차적(조건, 반복 등) 프로그래밍 기능을 추가한 Oracle 전용 언어
1. 영문 원뜻
}}
PL/SQL = Procedural Language/Structured Query Language
 
 
2. 한글 원뜻
SQL에 절차적(조건, 반복 등) 프로그래밍 기능을 추가한 Oracle 전용 언어
 


3. 특징


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


{| class="wikitable" style="border-collapse: collapse; width: 100%;"
|-
! style="border-right: 1px solid #ddd; padding: 8px; text-align: left; background: #f8f8f8;" | 항목
! style="padding: 8px; text-align: left; background: #f8f8f8;" | 설명
|-
| style="border-right: 1px solid #ddd; padding: 8px;" | '''블록 구조'''
| style="padding: 8px;" | <code>BEGIN ~ END</code> 사이에 코드 작성 (중첩 가능)
|-
| style="border-right: 1px solid #ddd; padding: 8px;" | '''변수 선언 가능'''
| style="padding: 8px;" | <code>DECLARE</code> 블록을 통해 변수 사용
|-
| style="border-right: 1px solid #ddd; padding: 8px;" | '''제어문 지원'''
| style="padding: 8px;" | <code>IF, CASE, LOOP, FOR, WHILE</code> 등 지원
|-
| style="border-right: 1px solid #ddd; padding: 8px;" | '''예외 처리'''
| style="padding: 8px;" | <code>EXCEPTION</code> 블록으로 오류 처리 가능
|-
| style="border-right: 1px solid #ddd; padding: 8px;" | '''SQL 통합 사용'''
| style="padding: 8px;" | SQL 문과 함께 프로시저, 함수 등 사용 가능
|}






4. 기본 구조 (PL/SQL 블록)
===기본 구조 (PL/SQL 블록)===
<source lang=sql>


DECLARE
DECLARE
49번째 줄: 57번째 줄:
     DBMS_OUTPUT.PUT_LINE('기타 오류 발생');
     DBMS_OUTPUT.PUT_LINE('기타 오류 발생');
END;
END;
</source>




54번째 줄: 63번째 줄:


5. 자주 쓰는 문법
===자주 쓰는 문법===
 
변수 선언


==== 변수 선언 ====
<source lang=sql>
v_salary NUMBER(8,2);
v_salary NUMBER(8,2);
v_name  VARCHAR2(100);
v_name  VARCHAR2(100);
</source>


조건문
==== 조건문 ====
 
<source lang=sql>
IF v_salary > 5000 THEN
IF v_salary > 5000 THEN
   DBMS_OUTPUT.PUT_LINE('고액 연봉자');
   DBMS_OUTPUT.PUT_LINE('고액 연봉자');
68번째 줄: 78번째 줄:
   DBMS_OUTPUT.PUT_LINE('일반 연봉자');
   DBMS_OUTPUT.PUT_LINE('일반 연봉자');
END IF;
END IF;
</source>


반복문
==== 반복문 ====
<source lang=sql>


FOR i IN 1..5 LOOP
FOR i IN 1..5 LOOP
   DBMS_OUTPUT.PUT_LINE('반복: ' || i);
   DBMS_OUTPUT.PUT_LINE('반복: ' || i);
END LOOP;
END LOOP;
 
</source>
예외 처리
==== 예외 처리 ====
 
<source lang=sql>
BEGIN
BEGIN
   -- 실행문
   -- 실행문
85번째 줄: 97번째 줄:
     DBMS_OUTPUT.PUT_LINE('기타 예외');
     DBMS_OUTPUT.PUT_LINE('기타 예외');
END;
END;
</source>




90번째 줄: 103번째 줄:


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




7. 예제 (전체 흐름)
===예제 (전체 흐름)===
<source lang=sql>


SET SERVEROUTPUT ON;
SET SERVEROUTPUT ON;
114번째 줄: 128번째 줄:
END;
END;


</source>





2025년 5월 18일 (일) 02:26 기준 최신판

PL/SQL 기초

  • Oracle의 PL/SQL은 Procedural Language extensions to SQL의 약자로, SQL에 절차적 프로그래밍 기능을 추가한 Oracle의 고유한 프로그래밍 언어입니다.
  • SQL은 단순한 질의와 조작에 적합하지만, 복잡한 로직(조건문, 반복문 등)은 어렵기 때문에 이를 보완하기 위해 PL/SQL이 만들어졌습니다.


menu_book PL/SQL 기초 설명
  • (영문)PL/SQL = Procedural Language/Structured Query Language
  • (한글) SQL에 절차적(조건, 반복 등) 프로그래밍 기능을 추가한 Oracle 전용 언어


특징

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


기본 구조 (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;


자주 쓰는 문법

변수 선언

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;


주의사항

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

예제 (전체 흐름)


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) 사용법

예외처리 고급 예시