PL/SQL
PL/SQL
PL/SQL 이란
Oracle에서 지원하는 SQL을 절차적 언어로 확장한 것. 조건문, 반복문, 변수 선언 등을 포함. Block 구조로 구성됨.
장점
- 다수의 SQL을 한 번에 DB에서 처리하므로 인해 잘 만들어진 경우 수행 속도가 향상될 수 있음.
- 모듈화 가능.
- 기존에 사용 불가능했던 변수, 조건 및 반복문 사용 가능.
- 예외 처리 가능.
Block 구조
- 선언부: Delcare 문으로 시작하며 변수 선언/대입, cursor 선언 가능.
- 실행부: BEGIN문으로 시작해 END 문으로 끝나며, 조건문, 반복문 등 사용 가능. 필수적으로 필요.
- 예외처리부: END문 직전에서 실행. 예외가 발생할 경우 처리.
Block의 종류
- 익명 block: DB에 저장되지 않고 사용자가 반복적으로 실행.
- Stored Procedure: DB에 저장되어 실행하려는 로직 처리.
- Stored Function: 프로시저와 동일하나 값을 사용자에게 반드시 반환. SQL에 사용 가능.
- Package: 프로시저 / 함수 등의 묶음.
- Trigger: 테이블에 지정된 이벤트 발생 시 자동적으로 실행되는 block.
Cursors
SQL에서 얻은 정보를 저장하기 위해 private SQL 메모리 영역을 사용. 이 메모리를 가리키는 포인터를 cursor라고 함.
Implicit / Explicit Cursor
- Implicit Cursor: SQL이 실행시 자동으로 생기는 암시적인 커서. SQL의 결과를 이용 가능하게 해 줌.
- Explicit Cursor: 프로그래머가 선언하는 커서. 반복문에서 재사용되는 경우 자주 사용됨.
Cursor Property
- SQL % FOUND: 반환된 행이 있는 지
- SQL % NOTFOUND: 반환된 행이 없는 지
- SQL % ISOPEN: Cursor가 닫혀 있는 지 (Implicit인 경우 항상 False)
- SQL % ROWCOUNT: 반환된 행 수
References
- https://en.wikipedia.org/wiki/PL/SQL
- https://goddaehee.tistory.com/99
- https://goddaehee.tistory.com/102
- https://goddaehee.tistory.com/117
- https://m.blog.naver.com/kmymk/110081331981