[Database] database 오라클 04 - 뷰, 프로시저, 트리거


뷰는 테이블의 복사판이다. 뷰를 만드는 명령어는 다음과 같다.

CREATE VIEW 뷰 이름 AS SELECT 컬럼명 FROM 테이블명
CREATE VIEW VW_PROCUREMENT_REQUEST AS
SELECT ITEM_CODE FROM TB_PROCUREMENT_REQUEST;

그러나 뷰를 만들 권한이 없으면 저 명령문을 써도 만들 수 없다.
데이터베이스는 중요하기 때문에 사용자에게 권한을 주고 그 권한 안에서만 사용할 수 있다. 심한 경우 SELECT만 할 수 있는 경우도 있다.
뷰를 사용하는 경우는 많은 사용자가 테이블을 조회하면 과부하가 걸리기 때문에, 조회할때 뷰를 사용하고 INSERT, UPDATE는 테이블에 하게 만들 때가 있다. 또한 각 사용자에게 특정 정보만 보여줘야할 때가 있다. 모든 정보를 가지고 있는 테이블은 보여주지 말아야한 정보도 있기 때문에 개발자가 막는다. 그리고 필요한 컬럼만 넣은 뷰 테이블을 만들어 제공한다. 뷰를 이용하면 공개되지 말아야할 정보를 숨길 수 있는 장점이 있다.

프로시저


프로시저는 SQL문을 코드를 짜듯이 만드는 것을 말한다. SQL문은 한번 실행하면 끝인데, 그 쿼리를 어떤 절차적인 로직을 가진 형태로 쿼리를 짜서 실행하는 것이다.

DECLARE (필수)
BEGIN(필수)
    CONTROL
    SQL
    EXCEPTION
    TRANSACTION
END(필수)
  • DECLARE : 프로시저의 명칭, 변수, 인수, 데이터 타입을 정의하는 선언부
  • BEGIN / END : 프로시저의 시작과 종료를 의미
  • SQL : DML, DCL이 삽입되어 데이터 관리를 위한 조회, 추가, 수정, 삭제 작업을 수행
  • EXCEPTION : BEGIN ~ END 안의 구문 실행 시 예외가 발생하면 이를 처리하는 방법 정의
  • TRANSACTION : 수행된 데이터 작업들을 DB에 적용할지 취소할지 결정하는 처리부

프로시저를 생성하기 위해서는 CREATE PROCEDURE 명령어를 사용한다.

CREATE [OR REPLACE] PROCEDURE 프로시저(파라미터)
[지역변수 선언]
BEGIN
    프로시저 BODY;
END;
  • OR REPLACE : 선택적인 예약어. 동일한 프로시저 이름이 이미 존재ㅏ는 경우, 기존의 프로시저를 대체할 수 있음
  • 파라미터 : 다음과 같은 파라미터가 올 수있다.
    • IN : 호출 프로그램이 프로시저에게 값을 전달할 때 지정
    • OUT : 프로시저가 호출 프로그램에게 값을 반환할 때 지정
    • INOUT : 호출 프로그램이 프로시저에게 값을 전달하고, 프로시저 실행 후 호출 프로그램에 값을 반환할때 지정
    • 매개변수명 : 호출 프로그램으로부터 전달받은 값을 저장할 변수 이름을 지정
    • 자료형 : 변수의 자료형을 지정
  • 프로시저 BODY : BGIN에서 시작하여 END로 끝나며, BEGIN과 END 사이에는 적어도 하나의 SQL문이 있어야한다.

프로시저를 실행하려면 EXECUTE 명령어, 또는 CALL을 사용하며 EXECUTE를 줄여 EXEC로 사용하기도 한다.

EXECUTE 프로시저명;
EXEC 프로시저명;
CALL 프로시저명;

트리거


트리거는 데이터의 저장 삭제 수정같은 작업이 발생되면 동시에 연계되어 있는 행동이 동작하는 것을 말한다. 프로그램 소스 상에 트리거 역할을 잡아 놓으면 금방 찾지만, SQL문에 트리거를 걸어 놓으면 따로 트리거를 찾아야하기 때문에 많은 시간이 소비된다는 단점이 있다.
트리거는 프로시저와 유사한 구성도를 가진다. 차이점은 EVENT가 중간에 필수적으로 넣어야 하는 부분이ㅏㄷ.

DECLARE(필수)
EVENT(필수)
BEGIN(필수)
    CONTROL
    SQL
    EXCEPTION
END(필수)
  • DECLARE : 트리거의 명칭, 변수 및 상수, 데이터 타입을 정의하는 선언부
  • EVENT : 트리거가 실행되는 조건을 명시
  • CONTROL : 조건문 또는 반복문이 삽입되어 순차적으로 처리
  • SQL : DML문이 삽입되어 데이터 관리를 위한 조회, 추가, 수정, 삭제 작업을 수행






© 2021.11. by 21thkafka

Powered by 21thkafka