[SQL] PL/SQL

hyunsooSong·2022년 5월 24일
0

SQL

목록 보기
11/14
post-thumbnail

🛸 PL/SQL


1. PL/SQL 특징

🌌 PL/SQL은 Oracle에 내장되어 있다.


  • Block 구조로 되어있어 각 기능별로 모듈화가 가능하다.

  • 변수, 상수 등을 선언하여 SQL 문장 간 값을 교환한다.

  • if, loop 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능하도록 한다.

    - Procedure 내부에 작성된 절차적 코드는 PL/SQL 엔진이 처리하고, 
      
      일반적인 SQL 문장은 SQL 실행기가 처리한다.
  • DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용할 수 있다.

  • Oracle과 PL/SQL을 지원하는 어떤 서버로도 프로그램을 옮길 수 있다.

  • 응용프로그램의 성능을 향상시킨다.

  • 여러 SQL 문장을 Block으로 묶고 한 번에 Block 전부를 서버로 보내기 때문에 통신량을 줄일 수 있다.


2. Oracle 저장 모듈, 절차형 SQL

🌌 Procedure, User Defined Function, Trigger

  • SQL 문장을 데이터 베이스 서버에 저장하여 사용자와 애플리케이션 사이에서 공유할 수 있도록 만든 일종의 SQL 컴포넌트 프로그램이다.

  • 독립적으로 실행되거나 다른 프로그램으로부터 실행될 수 있는 완전한 실행 프로그램이다.

문제1) 절차형 SQL 모듈에 대한 설명으로 가장 부적절한 것은?


1. 저장형 프로시저는 SQL을 로직과 함께 데이터베이스 내에 저장해 놓은 명령문의 집합을 의미한다.

2. 저장형 함수(사용자 정의 함수)는 단독적으로 실행되기 보다는 다른 SQL문을 통하여 호출되고 그 결과를 리턴하는 SQL의 보조적인 역할을 한다.

3. Trigger은 특정한 테이블에 INSERT, UPDATE, DELETE와 같은 DML문이 수행되었을 때 데이터베이스에서 자동으로 동작하도록 작성된 프로그램이다. (PRAGMA AUTONOMOUS_TRANSACTION으로 자율 트랜젝션 처리 가능)

4. 데이터 무결성과 일관성을 위해서 사용자 정의 함수를 사용한다.

=> 정답 : 4, 데이터 무결성과 일관성을 위해서 사용하는 것은 Trigger이다.


3. 프로시저와 트리거의 차이점

🌌 프로시저와 사용자 정의 함수는 문법은 동일하지만 사용자 정의 함수는 수행 결과를 단일 값으로 반환 한다는 차이점이 있다.


ProcedureTrigger
문법CREATE ProcedureCREATE Trigger
실행EXECUTE 명령어로 실행생성 후 자동으로 실행
TCLCOMMIT, ROLLBACK 가능COMMIT, ROLLBACK 불가능

+ 👀 틈새 문제

💡 데이터를 ROLLBACK이 불가능 하도록 DEPT 테이블의 데이터를 삭제 하기위한 PL/SQL문은?

execute immediate 'TRUNCATE TABLE DEPT'
=> TRUNCATE은 자동 커밋하기 때문에 rollback이 불가능하다.
[PL/SQL]  Procedure

CREATE OR REPLACE PROCEDURE insertDept
as
begin
    execute immediate 'TRUNCATE TABLE DEPT';
    commit;
end;

profile
🥕 개발 공부 중 🥕

0개의 댓글