본문 바로가기
IT ▶/Data

[PL/SQL 개념] 오라클 프로시저 PL/SQL 기본 정리

by 오프로 2019. 12. 21.

 

 

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 변수, 제어문



 

 

728x90
300x250