-- V_INCIDENT_FTMS (교통정보 돌발/정체) — 개발서버용 구성 -- -- 운영 DDL 은 TROAD_APP.V_INCIDENT_FTMS 로, 다수 기반 테이블(V_TRMB_ACDT_BRNWS_INFO01L1, -- T_TRMB_ROUTE01M1, TLISDEV.T_TRMB_CD_INFO01M1 ...)을 union all 로 가공하는 읽기 전용 뷰다. -- 개발서버에는 기반 테이블이 없고 뷰 자체에는 INSERT 가 불가하므로, -- 뷰 결과와 동일한 17개 컬럼을 갖는 물리 테이블을 두고 그 위에 같은 이름의 뷰를 만든다. -- 소유자는 chatbotApi 가 실제 접속하는 계정(OPR_MAIN)으로 맞춘다. -- jdbc:oracle:thin:@localhost:1521/orcl2 / OPR_MAIN SET DEFINE OFF SET SERVEROUTPUT ON -- 기존 뷰 제거 (테이블 재정의 순서 보장) BEGIN EXECUTE IMMEDIATE 'DROP VIEW OPR_MAIN.V_INCIDENT_FTMS'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; / -- 뷰의 원본 데이터 테이블 BEGIN EXECUTE IMMEDIATE q'[ CREATE TABLE OPR_MAIN.T_INCIDENT_FTMS ( ROUTE VARCHAR2(100), ROAD_NO NUMBER, ROUTE_ID VARCHAR2(20), WEATHER VARCHAR2(100), UPDWNAME VARCHAR2(50), UPDOWN VARCHAR2(1), MILEPOST VARCHAR2(400), CONTENTS VARCHAR2(2000), RAISE_TIME VARCHAR2(14), INCIDENT_TYPE VARCHAR2(20), REGION_ID VARCHAR2(20), REGION_NAME VARCHAR2(100), START_MILEPOST NUMBER, INITIALCHAR VARCHAR2(10), SEQ_NO VARCHAR2(10), INCIDENT_ID VARCHAR2(30), CONGZONE_ID VARCHAR2(30), LOADED_AT TIMESTAMP DEFAULT SYSTIMESTAMP ) ]'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF; END; / BEGIN EXECUTE IMMEDIATE 'CREATE INDEX OPR_MAIN.IX_INCIDENT_FTMS_ROUTE ON OPR_MAIN.T_INCIDENT_FTMS (ROAD_NO, UPDOWN)'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -955 AND SQLCODE != -1408 THEN RAISE; END IF; END; / BEGIN EXECUTE IMMEDIATE 'CREATE INDEX OPR_MAIN.IX_INCIDENT_FTMS_TYPE ON OPR_MAIN.T_INCIDENT_FTMS (INCIDENT_TYPE)'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -955 AND SQLCODE != -1408 THEN RAISE; END IF; END; / -- 운영과 동일한 컬럼·순서의 뷰 CREATE OR REPLACE FORCE VIEW OPR_MAIN.V_INCIDENT_FTMS ( "ROUTE", "ROAD_NO", "ROUTE_ID", "WEATHER", "UPDWNAME", "UPDOWN", "MILEPOST", "CONTENTS", "RAISE_TIME", "INCIDENT_TYPE", "REGION_ID", "REGION_NAME", "START_MILEPOST", "INITIALCHAR", "SEQ_NO", "INCIDENT_ID", "CONGZONE_ID" ) AS SELECT ROUTE, ROAD_NO, ROUTE_ID, WEATHER, UPDWNAME, UPDOWN, MILEPOST, CONTENTS, RAISE_TIME, INCIDENT_TYPE, REGION_ID, REGION_NAME, START_MILEPOST, INITIALCHAR, SEQ_NO, INCIDENT_ID, CONGZONE_ID FROM OPR_MAIN.T_INCIDENT_FTMS; -- 운영 스키마명(TROAD_APP)으로도 접근할 수 있게 동의어 제공 BEGIN EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM V_INCIDENT_FTMS FOR OPR_MAIN.V_INCIDENT_FTMS'; EXCEPTION WHEN OTHERS THEN NULL; END; /