오라클 프로시저

hyunmoo0_0·2021년 12월 24일
0

프로시저

오라클에서의 프로시저는 PL/SQL을 통해 만들어집니다. 자주 사용하는 SQL을 프로시저로 만든 뒤 필요 할때마다 호출,사용하여 작업 효율을 늘릴 수 있습니다. 함수는 특정 연산을 수행한 뒤 결과 값을 반환하지만 프로시저는 특정한 로직을 처리하기만 하고 결과 값은 반환하지 않는 서브 프로그램입니다.

  • 생성
    CREATE [OR REPLACE] PROCEDURE pro_name(
    매개변수,
    매개변수...
    1) 스칼라 변수, 2) %TYPE
    )
    IS (AS)
    지역변수 설정
    BEGIN
    제어 → 제어문, 연산자, SQL
    END;
    /

  • 삭제
    DROP PROCEDURE pro_name;

  • 호출
    SELECT → EXECUTE
    INSERT, UPDATE, DELETE → CALL

  • 매개변수
    IN : 내부에서만 사용하는 변수
    OUT : Call By Reference → 결과 값을 받는 변수
    INOUT : 내부사용, 값을 받는 변수

※인수의 타입 선언부분정리

1. IN => 내부 프로그램에 제공

변수이름 IN VARCHAR2; --인수선언할때 byte수 지정안함 (인수는 크기를 주지 않습니다.)

변수이름 IN 테이블이름.컬럼명%TYPE;

변수이름 IN 테이블이름.컴럼명%TYPE := 값;

변수이름 IN 테이블이름.컬럼명%TYPE DEFAULT 값;

2. OUT => 호출자에게 제공

(프로시저 실행 시점에 OUT 매개변수를 변수 형태로 전달하고, 프로시저 실행부에서 이 매개변수에 특정 값을 할당, )

변수이름 IN VARCHAR2;

변수이름 IN 테이블이름.컬럼명%TYPE;

3. IN OUT => 입력과 동시에 출력용으로 사용할 수 있다.

변수이름 IN VARCHAR2;

변수이름 IN 테이블이름.컬럼명%TYPE;

프로시저의 장단점

저장 프로시저의 장점

저장 프로시저를 사용하게되면 여러 가지 장점들이 있습니다.

  1. 하나의 요청으로 여러 SQL문을 실행 할 수 있습니다.

  2. 네트워크 소요 시간을 줄일 수 있습니다.
    만약 동일한 쿼리를 1000번 2000번 호출하는 것보다 SP를 이용해서 구현한다면 SP를 호출할 때 한 번만 네트워크를 경유하기 때문에 네트워크 소요시간을 줄이고 성능을 개선할 수 있습니다.

  3. 개발 업무를 구분해 개발 할 수 있습니다.
    순수한 애플리케이션만 개발하는 조직과 DBMS 관련 코드를 개발하는 조직이 따로 있다면, DBMS 개발하는 조직에서는 데이터베이스 관련 처리하는 SP를 만들어 API처럼 제공하고 애플리케이션 개발자는 SP를 호출해서 사용하는 형식으로 역할을 구분하여 개발이 가능합니다.

저장 프로시저의 단점

  1. 처리 성능이 낮습니다.
    문자나 숫자 연산에 저장 프로시저를 사용한다면 오히려 C나 JAVA보다 느린 성능을 보여줍니다.

  2. 디버깅이 어렵습니다.

  3. DB 확장이 매우 힘듭니다.
    서비스 사용자가 많아져 서버수를 늘려야할 때, DB 수를 늘리는 것이 더 어렵습니다.
    서비스 확장을 위해 서버수를 늘릴경우 DB 수를 늘리는 것보다 WAS의 수를 늘리는 것이 더 효율적이기 때문에 대부분의 개발에서 DB에는 최소의 부담만 주고 대부분의 로직은 WAS에서 처리할 수 있게 합니다.

사용자함수, 트리거, 프로시저 링크 : https://hijjang2.tistory.com/392

profile
안녕하세요~

0개의 댓글