1> PL/SQL 이란?
- Oracle 제공하는 절차적인 기능을 가진 프로그래밍 언어 (Procedural Language / SQL)
- SQL과 같이 쓰이면서 데이터 트랜잭션 처리, 정보 보호, 예외처리, 객체 지향 등 DB 관련 업무처리 기능 지원
2> PL/SQL 실행
- PL/SQL 블록 실행 -> PL/SQL 엔진 메모리 -> 블록(SQL문장들) 오라클 서버 프로세스 전달 및 수행
- PL/SQL이 저장하기 위해 선언한 변수로 데이터베이스에서 처리된 데이터 결과를 사용
- PL/SQL 엔진은 SQL 들을 받아서 오라클 서버 프로세스로 전달하고, SQL이 수행된 다음 값을 리턴
3> PL/SQL 구조
- 기본 Block 구성 : 선언(Declare), 실행(Execute), 예외처리(Exception)
Declare : 모든 변수, 상수 선언 (생략 가능)
Execute : 제어문, 반복문, 함수 정의 (생략 불가)
Exception : 실행 중 에러해결 문장 정의 (생략 가능)
- 종류 : 익명 블록, 저장 블록
- 익명 블록 : 일회성 사용 방식
- 저장 블록 (= 서버 프로그램 = 프로그램 단위) : 주기적으로 반복 사용
4> PL/SQL 예시
- PL/SQL SELECT 문 사용
DECLARE // 선언부 (아래 실행부에서 SELECT 한 SQL 쿼리 결과값을 넣을 변수를 선언)
plname VARCHAR2(10);
plnumber NUMBER(10);
BEGIN // 실행부 (SQL실행 결과 값이 위에서 선언한 변수에 INTO로 저정한다.)
SELECT phonenumber, name INTO plnumber, plname
FROM mbr_table
WHERE mbrno = 100;
END ; // 종료
/ // 위의 PL/SQL 블록 실행
위의 PL/SQL 문을 살펴보면,
DECLARE은 PL/SQL 블록이 시작되는 점을 선언하고,
BEGIN 은 실행부가 시작되는 시점으로 SQL문이 수행됩니다.
END 는 PL/SQL 이 종료되는 시점입니다.
아래와 같이 SQL문을 사용과 비슷한데 PL/SQL은 INTO 변수명을 통해 선언한 변수명에 데이터를 넣게 됩니다.
단, PL/SQL에서 선언한 변수명과 타입이 Table에서의 변수명, 타입이 동일해야 합니다.
SELECT list
INTO 변수명
FROM table
WHERE 조건절
;
사용자에게 입력값을 받아서 조회하고자 할 때는
아래와 같이 보통 WHERE 조건절에 ‘&mbrno’ 처럼 ‘&’ 기호를 써서 변수에 할당합니다.
DECLARE // 선언부 (아래 실행부에서 SELECT 한 SQL 쿼리 결과값을 넣을 변수를 선언)
plname VARCHAR2(10);plnumber NUMBER(10);
BEGIN // 실행부 (SQL실행 결과 값이 위에서 선언한 변수에 INTO로 저정한다.)
SELECT phonenumber, name INTO plnumber, plname
FROM mbr_table
WHERE mbrno = ‘&mbrno’;
END ; // 종료
/ // 위의 PL/SQL 블록 실행
- PL/SQL DML 문 사용
DML (Insert, Delete, Update, Merge) 사용
a. INSERT
BEGIN
INSERT INTO table
VALUES(number = ‘123’);
END;/
위에처럼 직접 값을 넣어 Insert 할 수 있고,
아래와 같이 &변수명을 사용하여 원하는 값을 입력 받아 해당 값으로 데이터를 Insert 할 수 있습니다.
DECLARE
name varchar(20) :=’&name’;
team varchar(20) :=’&team’;
BEGIN
INSERT INTO table
VALUES(name,team);
END;
/
Enter value for name : Silva
Enter value for team : Manchester City
b. UPDATE
BEGIN
UPDATE table
SET team = ‘Liverpool’
WHERE name = ‘Choi’;
END;
/
c. DELETE
BEGIN
DELETE FROM table
WHERE team = ‘Arsenal’;
END;
/
5> PL/SQL 렉시칼
렉시칼 : 특정 언어에 포함되는 문자 집합으로 식별자, 주석, 구분자, 리터럴 등이 있습니다.
a. 식별자 : PL/SQL 객체에 부여
b. 구분자 : 특별한 의미 기호 (+, - , *, /, = , @, ;, <>, !=. ||, --, := 등)
c. 리터럴 : 변수에 할당되는 값 (문자, 숫자, 부울 등)
d. 주석 : 프로그래밍 결과에 영향을 주지 않고 해당 내용 설명 작성
PL/SQL 변수와 제어문 (IF, CASE 같은 조건문과 반복문,(LOOP, FOR, WHILE) 등에 대해 정리는
아래 참고하시기 바랍니다.!!!
[참고 글]
[IT/Data] - [PL/SQL 개념] 오라클 PL/SQL PROCEDURE (프로시저), FUNCTION 설명
[IT/Data] - [PL/SQL개념] PL/SQL cursor 커서, Oracle Exception 예외처리
[IT/Data] - [PL/SQL개념] 오라클 프로시저 개념 정리 – (2) PL/SQL 변수, 제어문
'IT ▶ > Database' 카테고리의 다른 글
[PL/SQL 개념] PL/SQL cursor 커서, Oracle Exception 예외처리 (0) | 2020.01.11 |
---|---|
[PL/SQL개념] 오라클 프로시저 개념 정리 – (2) PL/SQL 변수, 제어문 (0) | 2020.01.11 |
[데이터베이스 기초] 오라클 SQL 기본 개념 (SELECT, ORDER BY, NVL) (0) | 2019.12.15 |
[Big Data] Introduction about Big Data (빅데이터 소개) (0) | 2019.11.29 |
[SQL기초] OUTER JOIN 개념 및 JOIN 사용방법 (0) | 2019.11.13 |