작업하다 보면 빠르게 함수를 만들어서 테스트를 해보고 싶을 경우가 종종 있다.
PROCEDURE 로 만들 경우와 PACKAGE 로 만들 경우를 각각 설명한다.
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;
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;