DataBase 하면 Oracle.
거의 수식어처럼 말하게 되는 것 중 하나이다.
여느 때와 다름없이 프로젝트를 수행하던 중
Oracle이라는 PL/SQL을 처음 듣게 되었다.
PL/SQL 이란?
SQL을 확장한 절차적 언어(Procedural Language) 관계형 데이터베이스에서 사용되는 Oracle의 표준 데이터 액세스 언어이다. 쉽게 말해 SQL의 단점을 보완한 SQL의 확장판이라고 말할 수 있다. PL/SQL은 블록형 구조를 가지고 있으며 스스로가 컴파일 엔진을 포함하고 있다. 또한 DML과 Query문, 절차형 언어(IF문, LOOP) 등을 사용하여 절차적 프로그래밍이 가능한 강력한 트랜잭션 언어이다.
장점 및 사용하는 이유
PL/SQL의 특징 중 하나인 블록형 구조가 주목받는 이유는 다수의 SQL문을 한 번에 ORACLE DB로 보내 처리할 수 있어 수행 속도를 향상하기 때문이다. 많은 양의 데이터를 처리하게 되는 DB에게 늘 과제인 속도 개선에서 극적으로 도와줄 수 있는 장점이라고 볼 수 있다. 또한 두 개 이상의 블록으로 구성된 모든 요소는 모듈화가 가능하여 보다 이식성이 좋다. 이는 곧 강력한 프로그램을 작성할 수 있다는 것을 의미한다. 또한 프로시저 생성자와 SQL의 통합이 가능하고 예외처리를 할 수 있다.
기존 SQL의 단점을 보완한 언어라고 설명했다. 그렇다면 어떤 특성이 불편했는지 간단하게 정리하고 넘어가자.
▶ 기존 SQL의 단점
1) 변수가 없다.
2) 한 번에 하나의 명령문만 사용이 가능하여 상대적으로 트래픽이 증가한다.
3) 제어문 IF, LOOP 등을 사용할 수 없다.
4) 예외처리가 없다.
특징
DECLARE절에서만 변수 선언이 가능하며, BEGIN 섹션에서 새 값이 할당될 수 있다. IF문을 사용하여 조건에 따라 분기 처리를 할 수 있고, 커서 CURSOR를 사용하여 여러 행을 검색하거나 처리한다. PL/SQL의 SELECT문은 해당 SELECT의 결과를 PL/SQL 엔진으로 보내는데 이때 캐치하기 위한 변수를 DECLARE 해야 하고, INTO 절을 선언하여 변수를 표현해야 한다. DECLARE, BEGIN, Exception문을 제외한 END문과 모든 PL/SQL 문장은 줄의 마지막에 세미콜론(;)을 반드시 붙여야 한다.
구조 (선언부 / 실행부 / 예외처리부): 3개의 섹션
1) 선언부 (필수 X)
DECLARE문으로 시작하여 블록에서 사용될 변수, 상수, 커서, 예외 Exception를 선언하는 섹션으로 생략 가능하다.
2) 실행부 (필수 O)
BEGIN문으로 시작하여 END;문으로 종료하며 수행될 작업의 body이다. SQL문(SELECT/UPDATE/INSERT/DELETE), 제어문, 반복문, 커서 속성 등을 이용하여 블록에서 실행할 body를 구성할 수 있다.
3) 예외처리부 (필수 X)
예외처리 섹션은 END;문 바로 앞에 위치하며 미리 정의된 예외, 사용자 정의 예외, Exception 함수를 사용하여 추적하고 명시된 조건이 발생할 경우 취할 작업을 정의한다. 선언부와 마찬가지고 선택적 섹션이다.
*) END문 (필수 O)
PL/SQL의 종류: (익명 블록 vs. 이름이 있는 블록)
▷ 익명 블록
이름이 없는 PL/SQL Block으로 DB에 저장되지 않고, 사용자가 필요할때마다 반복적으로 작성하여 실행한다.
▷ 이름이 있는 블록
1) 프로시저 : 리턴 값을 하나 이상 가질 수 있는 프로그램.
2) 함수: 리턴 값을 하나 이상 가질 수 있는 프로그램.
3) 패키지: 하나 이상의 프로시저, 함수, 변수, 예외 등의 묶음.
4) 트리거 : 지정된 이벤트가 발생하면 자동으로 실행되는 PL/SQL 블록
'개발.log > database' 카테고리의 다른 글
[Mybatis][Mysql] <[![CDATA[…]]> 사용법/CDATA 꼭 써야하나?/XML Parser 문자열인식 (0) | 2023.09.20 |
---|---|
[Mysql][MariaDB] 서로 다른 테이블 동시에 UPDATE 하는 법/다른 테이블을 참조하여 UPDATE 하는 방법 (0) | 2023.09.20 |