절차형 PL/SQL
- Exception → 생략 가능
- =저장모듈(Stored Module)
Trigger
- 데이터의 무결성과 일관성 위해 특정 테이블에 INSERT, UPDATE, DELETE와 같은 DML문이 수행되었을 때 DB 내에서 자동 실행
- DB에 로그인하는 작업에도 정의 가능
- TCL(commit, rollback) 사용 불가능
- 보통 DML을 많이 사용
Procedure
- SQL을 로직과 함께 DB 내에 저장해놓은 명령문의 집합
- Commit, Rollback과 같은 TCL 사용 가능
- 반드시 값이 반환되지 않음
User Defined Function
- 단독적으로 실행되기보다 다른 SQL문을 통해 호출되고 그 결과를 반환하는 보조적인 역할
- 반드시 값이 반환됨
- PL/SQL 특징
- 동적 SQL 또는 DDL 문장 실행 시
EXECUTE IMMEDIATE
를 사용해야 함
- ex)
execute immediate ‘TRUNCATE TABLE DEPT’;
- Block 구조로 되어있어 각 기능별 모듈화 가능
- 여러 SQL 문장을 Block으로 묶고 한번에 서버로 보내므로 통신량 감소 → 응용 프로그램의 성능 향상
- 변수, 상수 등 사용으로 SQL 문장간 값을 교환. 일반 SQL 문장 실행 시 WHERE 절의 조건 등으로 대입 가능
- IF, LOOP 등의 절차형 언어를 사용해 절차적 프로그램 가능
- DBMS 정의 에러나 사용자 정의 에러 사용 가능
- 프로시저, 사용자 정의 함수, 트리거 객체를 PL/SQL로 작성 가능
- 프로시저 내부에 작성된 절차적 코드는 PL/SQL 엔진이 처리, 일반적인 문장은 SQL 실행기가 처리
- PL/SQL로 작성된 프로시저, 사용자 정의 함수는 작성자 기준으로 트랜잭션 분할 가능
- 프로시저 내에서 다른 프로시저 호출 시 호출 프로시저의 트랜잭션과는 별도로
PRAGMA AUTONOMOUS_TRANSACTION
을 선언해 자율트랜잭션 처리 가능
- 오라클에 내장되어 있음. 오라클과 PL/SQL을 지원하는 어떤 서버로도 프로그램을 옮길 수 있음
CURSOR
- 선언→OPEN→FETCH(읽어오기)→CLOSE