[Oracle] 프로시저, 패키지 작성 후 테스트 실행

qb·2024년 1월 16일
0

Oracle

목록 보기
2/2
post-thumbnail




작업하다 보면 빠르게 함수를 만들어서 테스트를 해보고 싶을 경우가 종종 있다.

PROCEDURE 로 만들 경우와 PACKAGE 로 만들 경우를 각각 설명한다.


PROCEDURE

  • 빠르게 1개의 프로시저만 만들고 테스트할 경우
CREATE OR REPLACE PROCEDURE YOUR_SCHEMAS."TMP_TEST"
-- =============================================
-- Author       : you
-- Create date  : 2024-01-16
-- Description  : ...
-- =============================================
IS

-- 커서 정의
CURSOR CSR_BRAND IS
    SELECT VALUE_2  
    FROM MY_TABLE 
    WHERE NEED_CODE = 'BOSS' 
      AND MOOD_CODE IN (
          SELECT BRAND_TYPE
          FROM BRAND_TABLE)
;
  v_BRAND VARCHAR2(3);
  v_CONTRACT VARCHAR2(1);

-- 커서 사용
BEGIN
  OPEN CSR_BRAND;
  FETCH CSR_BRAND INTO v_BRAND;
  CLOSE CSR_BRAND;

-- SUBSTR // 2번째 자리부터 1개 추출
  IF SUBSTR(v_BRAND_TYPE, 2, 1) = 'F' THEN
    v_CONTRACT := 'False';
  ELSIF SUBSTR(v_BRAND_TYPE, 2, 1) = 'T' THEN
    v_CONTRACT := 'True';
  END IF;

-- 변수 출력
DBMS_OUTPUT.PUT_LINE('v_BRAND : ' || v_BRAND);
DBMS_OUTPUT.PUT_LINE('v_CONTRACT : ' || v_CONTRACT);

END TMP_TEST_SUNGCHAN;
-- script에서 실행

-- DBeaver의 경우 EXEC 명령어 안됨

BEGIN
TMP_TEST_BRAND();
END;

PACKAGE

  • 프로시저들을 여러개 만들어가며 테스트할 경우 (쌓아가며 작성할 경우)
CREATE OR REPLACE PACKAGE BODY YOUR_SCHEMAS."PKG_TEST" AS

	PROCEDURE TMP_TEST
-- =============================================
-- Description  : ...
-- =============================================
	IS

	/* 위 프로시저의 내용이랑 동일 */

	END TMP_TEST;

END PKG_TEST;
-- script에서 실행

-- DBeaver의 경우 EXEC 명령어 안됨

BEGIN
PKG_ZZ_TEST_SUNGCHAN.BD_BRAND_CONTRACT();
END;
profile
q_________b

0개의 댓글