Files
exAichatbot_agent/server-dev/oracle/sql/10_v_incident_ftms.sql
T
2026-08-13 13:38:36 +09:00

100 lines
3.1 KiB
SQL
Executable File

-- 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;
/