[SQLD] 절차형 SQL (PL/SQL)

yjkim97·2023년 8월 30일

자격증

목록 보기
19/24
post-thumbnail

절차형 SQL

SQL에도 절차 지향적인 프로그래밍이 가능하도록 DBMS 벤더별로 절차형 SQL을 제공하고 있다.

  • Oracle : PL/SQL
  • SQL Server : T-SQL
  • DB2 : SQL/PL

절차형 SQL을 이용하면 SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하여 특정 기능을 수행하는 저장 모듈을 생성할 수 있다.

1. 저장 모듈

  • SQL문을 데이터베이스 서버에 저장해 사용자와 애플리케이션 사이에 공유할 수 있도록 만든 SQL 컴포넌트 프로그램
  • 독립적으로 실행되거나 다른 프로그램으로부터 실행될 수 있는 완전한 실행 프로그램
  • 오라클의 저장모듈에는 Procedure, User Defined Function, Trigger가 있다.

프로시저(Procedure) vs 트리거(Trigger)

프로시저트리거
create procedure 문법 사용create trigger 문법 사용
execute 명령어로 실행생성 후 자동으로 실행
TCL(commit, rollback) 실행 가능TCL(commit, rollback) 실행 불가능
- 데이터의 무결성과 일관성을 위해서 사용
- 데이터베이스에 로그인하는 작업에도 정의 가능
- 특정 테이블에 대해서 insert, update, delete문이 수행되었을 때 호출되도록 정의

2. PL/SQL

특징

  • PL/SQL은 Oracle에 내장되어있어서, 이를 지원하는 어떤 서버로도 프로그램을 옮길 수 있다.
  • Block 구조로 되어있어 각 기능별로 모듈화가 가능하다.
  • 변수, 상수 등을 선언하여 SQL문장간 값을 교환한다.
  • IF, LOOP 등을 절차형 언어를 사용하여 절차적인 프로그래미 가능하다.
  • DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용할 수 있다.
  • PL/SQL은 응용 프로그램의 성능을 향상시킨다
  • 여러 SQL 문장을 Block으로 묶고 한번에 Block 전부를 서버로 보내기 때문에 통신량을 줄일 수 있다.
  • ⭐️ PL/SQL로 작성된 저장모듈은 작성자의 기준으로 트랜젝션을 분할할 수 있으며, 프로시저 내에서 다른 프로시저를 호출할 경우 호출 프로시저의 트랜젝션과 별도의 트랜젝션으로 실행하도록 설정할 수 있다.

⭐️ 프로시저 내부에 작성된 절차적 코드는 PL/SQL엔진이 처리하고 일반적인 SQL문장은 SQL실행기가 처리한다.

  • PL/SQL 엔진 : 프로그램 문장 처리
  • SQL Statement Executor : SQL 문장 처리

⭐️ EXECUTE IMMEDIATE '실행sql'
PL/SQL에서는 동적 SQL 또는 DDL문장을 실행할 때 EXECUTE IMMEDIATE를 사용해야 한다.

profile
어제는 🐸두꺼비 오늘은 😄YJ

0개의 댓글