티스토리 뷰
PROCEDURE SP_REJECT_WITH_HISTORY (
p_id IN NUMBER,
p_worker_id IN VARCHAR2
) IS
v_error_msg VARCHAR2(4000);
v_data MAIN_TABLE%ROWTYPE;
BEGIN
-- 1. 현재 데이터 로드
SELECT * INTO v_data FROM MAIN_TABLE WHERE ID = p_id;
-- 2. 20여 가지 항목 검증 (메시지 누적)
-- [예시 1: NULL 체크]
IF v_data.TITLE IS NULL THEN
v_error_msg := v_error_msg || '[제목 누락] ';
END IF;
-- [예시 2: 복합 조건 체크]
-- 컬럼값이 1인데 다른 테이블에 데이터가 있는 경우
DECLARE
v_cnt NUMBER;
BEGIN
IF v_data.TYPE_CD = '1' THEN
SELECT COUNT(*) INTO v_cnt FROM SUB_TABLE WHERE REF_ID = p_id;
IF v_cnt > 0 THEN
v_error_msg := v_error_msg || '[타입1 데이터 중복] ';
END IF;
END IF;
END;
-- 3. 검증 결과에 따른 처리
IF v_error_msg IS NOT NULL THEN
-- A. 메인 테이블 상태 업데이트
UPDATE MAIN_TABLE
SET STATUS = 'REJECTED',
UPD_DT = SYSDATE
WHERE ID = p_id;
-- B. 이력 테이블에 INSERT (반려 사유 포함)
INSERT INTO STEP_HISTORY (
HIST_SEQ,
TARGET_ID,
STATUS,
REMARK, -- 여기에 'REJECT_REASON' 명칭 사용 권장
WORKER_ID,
WORK_DT
) VALUES (
SEQ_HIST.NEXTVAL,
p_id,
'REJECTED',
TRIM(v_error_msg),
p_worker_id,
SYSDATE
);
END IF;
COMMIT;
END;
- Total
- Today
- Yesterday
- Eclipse
- JavaScript
- LILI COFFEE
- handdrip
- JSP
- GitHub
- oracle
- date
- partition
- 커피
- MySQL
- 리리 커피
- 단위변환
- SQL
- 스페셜티
- 로스터리
- SEQUENCE
- MariaDB
- dbeaver
- Between
- Coffee
- diff
- backup
- db
- BAT
- Powershell
- table
- VBS
- Filter
- popup
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
