■ PL/SQL이란?
Procedural Language/SQL의 약자로 SQL만으로는 구현이 어렵거나 구현 불가능한 작업을 수행하기 위해 오라클에서 제공하는 절차적인 프로그래밍 언어.
변수 · 조건 처리 · 반복 처리 등 다른 프로그래밍 언어에서 제공하는 다양한 기능을 사용할 수 있다.
데이터 트랜잭션 처리 능력이나 정보보호, 데이터에 대한 보안, 예외처리 기능, 객체 지향 등 데이터 베이스와 관련된 중요한 기능을 지원하는 데이터베이스 업무를 처리하기에 최적화된 언어이다.
■ PL/SQL 사용하는 이유
- 대용량 데이터를 연산해야 할 때, WAS등의 서버로 전송해서 처리하려면 네트워크에 부하가 많이 걸릴 수 있다. 이때 프로시저나 함수를 사용하여 데이터를 연산 가공한 수, 최종 결과만 서버에 전송하면 부담을 덜 수 있다.
- 로직을 수정하기 위해 서버를 셧다운 시키지 않아도 된다. 서버에서는 단순히 DB에 프로시저를 호출하여 사용하면 된다.
- 쿼리문을 직접 노출하지 않는 만큼 SQL Injection의 위험성이 줄어든다.
- 블록 단위로 유연하게 사용할 수 있다.
■ 단점
- 유지보수가 힘들다.
- 대용량 처리가 많을 경우, DB에 부하를 줄 수 있다.
- Git과 같은 형상관리를 사용할 수 없다.
■ PL/SQL의 기본 형식
1
2
3
4
5
6
7
|
DECLARE 블록
[실행에 필요한 여러 요소 선언];
BEGIN
[작업을 위해 실제 실행하는 명령어];
EXCEPTION
[PL/SQL수행 도중 발생하는 오류 처리];
END;
|
cs |
블록 : PL/SQL의 기본단위. 선언부 · 실행부 · 예외 처리부로 구성
구성 키워드 | 필수/선택 | 설명 |
DECLARE (선언부) | 선택 | 실행에 사용될 변수 · 상수 · 커서 등을 선언 |
BEGIN (실행부) | 필수 | 조건문 · 반복문 · SELECT · DML · 함수 등을 정의 |
EXCEPTION (예외 처리부) | 선택 | PL/SQL 실행 도중 발생하는 예외 상황을 해결하는 문장 서술 |
■ PL/SQL 작성 주의사항
- PL/SQL 블록을 구성하는 DECLARE, BEGIN, EXCEPTION 키워드에는 세미콜론(;)을 사용하지 않는다.
- PL/SQL 블록의 각 부분에서 실행해야 하는 문장 끝에는 세미콜론(;)을 사용
- SQL에서와 마찬가지로 PL/SQL 내부에서도 주석 사용 가능(-- 주석내용 , /* 주석내용 */)
- PL/SQL문 작성을 마치고 실행하기 위해 마지막에 슬래시(/)를 사용 (SQLDeveloper에서는 생략 가능)
■ PL/SQL에서 간단한 문장 출력
1
2
3
4
5
6
|
--문장 출력
SET SERVEROUTPUT ON -- 실행결과를 화면에 출력하기 위한 것
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO, PL/SQL!');
END;
/ -- 실행하기 위해 사용 (SQLDeveloper에서는 생략 가능)
|
cs |
SQLPlus에서 PL/SQL 실행결과를 화면에 출력하려면 SERVEROUTPUT 환경변수 값을 ON으로 해야한다.
SQLPlus의 접속 계정이 변경되거나 접속이 끊어진 후 다시 접속했다면 SERVEROUTPUT을 다시 ON해줘야 결과를 확인할 수 있다.
PUT_LINE은 화면 출력을 할 때 사용한다. DEMS_OUTPUT패키지 안에 있다.
■ 변수
변수는 데이터를 일시적으로 저장하는 요소이다.
선언부(DECLARE)에서 작성하며 작성한 변수는 실행부(BEGIN)에서 활용한다.
1
|
[변수 이름] [자료형] := [값 OR 값을 도출하는 표현식]
|
cs |
1
2
3
4
5
6
7
8
9
|
DECLARE -- 선언부
V_EMPNO NUMBER(4) := 7788; -- 변수 V_EMPNO에 7788할당. NUMBER(4)이므로 4자리 숫자
V_ENAME VARCHAR(10); -- 변수 V_ENAME을 VARCHAR(10)자료형으로 선언. 값은 지정하지 X
BEGIN -- 실행부
V_ENAME := 'SCOTT'; -- 변수 V_ENAME에 SCOTT을 저장
DBMS_OUTPUT.PUT_LINE('V_EMPNO : ' || V_EMPNO); -- 변수 V_EMPNO 출력
DBMS_OUTPUT.PUT_LINE('V_ENAME : ' || V_ENAME); -- 변수 V_ENAME 출력
END; -- 현재 블록 종료
/ -- 작성한 PL/SQL문을 실행(SQLDeveloper에서는 생략 가능)
|
cs |
간단하게변수를 선언하고 값을 대입한 뒤 출력하는 예시이다.
문자를 연결할 때는 || 연산자를 사용한다.
■ 상수
1
|
[변수 이름] CONSTANT [자료형] := [값 OR 값을 도출하는 표현식]
|
cs |
■ 기본값
1
|
[변수 이름] [자료형] DEFAULT [값 OR 값을 도출하는 표현식]
|
cs |
'프로그램 > DataBase' 카테고리의 다른 글
[Oracle] JOIN (0) | 2021.02.16 |
---|---|
[Oracle] 프로시저, 함수의 이해 (0) | 2021.02.16 |
[Oracle] 뷰(VIEW)의 이해 (0) | 2021.02.16 |
[Oracle] 쿼리문의 이해 및 자주 쓰는 내장 함수 이해 (0) | 2021.02.16 |
[Oracle] DDL (테이블 및 인덱스 생성) (0) | 2021.02.15 |