PL/SQL
(Procedural Language extension to SQL)
- SQL을 확장한 절차적 언어(Procedural Language)이다.
- 관계형 데이터베이스에서 사용되는 Oracle의 표준 데이터 엑세스 언어로, 프로시저 생성자를 SQL과 완벽하게 통합한다.
- 유저 프로세스가 PL/SQL 블록을 보내면, 서버 프로세서는 PL/SQL Engine에서 해당 블록을 받고 SQL과 Procedural를 나눠서 SQL은 SQL Statement Executer로 보낸다.
- PL/SQL 프로그램의 종류는 크게 Procedure, Function, Trigger 로 나뉘어 진다.
- 오라클에서 지원하는 프로그래밍 언어의 특성을 수용하여 SQL에서는 사용할수없는 절차적 프로그래밍 기능을 가지고 있어 SQL의 단점을 보완하였다.
1️⃣ PL/SQL 프로그램 종류 5가지
💤외우기꿀팁 : 버스타고가라~
Package
User Function
Stored Procedure
Trigger
Anonymous Block
2️⃣ EXCEPTION 종류 3가지
PL/SQL에서 Error가 발생하면 Error는 Exception을 발생시켜
해당 블록을 중지하고 예외처리부분으로 이동한다.
예외는 Oracle내부에서 자동으로 발생할 수 있으며 또한 사용자에 의해 직접 발생시킬 수 있다.
1. 정의된 Oracle Server Error
- PL/SQL에서 자주 발생하는 Error를 미리 정의함
- 선언할 필요가 없으며 서버에서 암시적으로 발생
2. 정의되지 않은 Oracle Server Error
- 기타 표준 Error
- 선언을 해야하며 서버에서 암시적으로 발생
3. 사용자 정의 Error
- 프로그래머가 정한 조건에 만족하지않을 경우 발생
- 선언을 해야하고, 명시적으로 RAISE문을 사용하여 발생
/
SET SERVEROUTPUT ON;
/
DECLARE --변수선언
--I INT;
ID VARCHAR2(10);
BEGIN -- TRY
SELECT BOOK_ID INTO ID FROM BOOK; --문제가발생시 EXCEPTION 영역으로 빠진다.
--I : 자동선언정수형 변수
FOR I IN 1..30 LOOP --1부터 30까지 반복
INSERT INTO BOOK(BOOK_ID, TITLE, CATEGORY, PRICE, INSERT_DATE, CONTENT)
VALUES(
(SELECT NVL(MAX(BOOK_ID),0) + 1 FROM BOOK),
'제목'||I,'카테고리'||I,10000,SYSDATE,'내용'||I
);
END LOOP;
COMMIT;
--정의된 예외
--정의되지 않은 예외
--사용자 정의 예외
EXCEPTION --CATCH
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('오류 발생 : ' || SQLERRM); --SYSOUT같은애
END;
/
'공부 기록노트 > Oracle' 카테고리의 다른 글
[Oracle] Merge_into/ 데이터 삽입과 수정 동시에하기 (0) | 2023.02.08 |
---|---|
E-R관계 맺기/eXERD 이용하여 논리.물리 다이어그램 작성, 포워드엔지니어링 (0) | 2023.02.03 |
[Oracle] 데이터백업 테이블 생성 및 복합키 변경방법 (0) | 2023.01.30 |
[Database] eXERD 사용해보기(리버스엔지니어링) (0) | 2023.01.30 |
[Oracle SQL Developer] 계정 생성/ DB접속 방법 (0) | 2023.01.08 |