(새 문서: Oracle의 PL/SQL은 Procedural Language extensions to SQL의 약자로, SQL에 절차적 프로그래밍 기능을 추가한 Oracle의 고유한 프로그래밍 언어입니다. SQL은 단순한 질의와 조작에 적합하지만, 복잡한 로직(조건문, 반복문 등)은 어렵기 때문에 이를 보완하기 위해 PL/SQL이 만들어졌습니다. ⸻ PL/SQL 기초 설명 1. 영문 원뜻 • PL/SQL = Procedural Language/Structured Query Language ⸻ 2. 한글 원...) |
편집 요약 없음 |
||
2번째 줄: | 2번째 줄: | ||
SQL은 단순한 질의와 조작에 적합하지만, 복잡한 로직(조건문, 반복문 등)은 어렵기 때문에 이를 보완하기 위해 PL/SQL이 만들어졌습니다. | SQL은 단순한 질의와 조작에 적합하지만, 복잡한 로직(조건문, 반복문 등)은 어렵기 때문에 이를 보완하기 위해 PL/SQL이 만들어졌습니다. | ||
⸻ | ⸻ | ||
{{요점 | |||
|내용= PL/SQL 기초 설명 | |||
* (영문)PL/SQL = Procedural Language/Structured Query Language | |||
* (한글) SQL에 절차적(조건, 반복 등) 프로그래밍 기능을 추가한 Oracle 전용 언어 | |||
}} | |||
3. 특징 | 3. 특징 | ||
항목 설명 | {| class="wikitable" style="border-collapse: collapse; width: 100%;" | ||
블록 구조 BEGIN ~ END 사이에 코드 작성 (중첩 가능) | |- | ||
변수 선언 가능 DECLARE 블록을 통해 변수 사용 | ! style="border-right: 1px solid #ddd; padding: 8px; text-align: left; background: #f8f8f8;" | 항목 | ||
제어문 지원 IF, CASE, LOOP, FOR, WHILE 등 지원 | ! style="padding: 8px; text-align: left; background: #f8f8f8;" | 설명 | ||
예외 처리 EXCEPTION 블록으로 오류 처리 가능 | |- | ||
SQL 통합 사용 SQL 문과 함께 프로시저, 함수 등 사용 가능 | | 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 문과 함께 프로시저, 함수 등 사용 가능 | |||
|} | |||
31번째 줄: | 44번째 줄: | ||
4. 기본 구조 (PL/SQL 블록) | 4. 기본 구조 (PL/SQL 블록) | ||
<source lang=sql> | |||
DECLARE | DECLARE | ||
49번째 줄: | 63번째 줄: | ||
DBMS_OUTPUT.PUT_LINE('기타 오류 발생'); | DBMS_OUTPUT.PUT_LINE('기타 오류 발생'); | ||
END; | END; | ||
</source> | |||
57번째 줄: | 72번째 줄: | ||
변수 선언 | 변수 선언 | ||
<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번째 줄: | 84번째 줄: | ||
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번째 줄: | 104번째 줄: | ||
DBMS_OUTPUT.PUT_LINE('기타 예외'); | DBMS_OUTPUT.PUT_LINE('기타 예외'); | ||
END; | END; | ||
</source> | |||
97번째 줄: | 117번째 줄: | ||
7. 예제 (전체 흐름) | 7. 예제 (전체 흐름) | ||
<source lang=sql> | |||
SET SERVEROUTPUT ON; | SET SERVEROUTPUT ON; | ||
114번째 줄: | 135번째 줄: | ||
END; | END; | ||
</source> | |||
2025년 5월 18일 (일) 02:20 판
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 전용 언어
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;
⸻