반응형
목적 : ORACLE LONG 타입에 대해 특정 문자열 체크를 수행한다.
내용
ORACEL의 VIEW 소스를 찾아보기 위해 USER_VIEWS 를 조회하는데 해당 VIEW의 TEXT 컬럼이 LONG타입이라 LIKE나 UPPER 함수가 작동하지 않았다.
그래서 임시 프로시져를 생성하여 TEXT값을 변수에 담고 체크하게 수정하였다.
DECLARE
LV_TXT VARCHAR2(4000);
BEGIN
FOR CR IN (
SELECT VIEW_NAME, TEXT
FROM USER_VIEWS
) LOOP
LV_TXT := SUBSTR(CR.TEXT, 1, 3000);
--DBMS_OUTPUT.PUT_LINE(CR.TEXT); --VIEW 내용
--DBMS_OUTPUT.PUT_LINE('LV_TXT : ' || LV_TXT); --VIEW 내용 변수에 담은것
IF INSTR(UPPER(LV_TXT), 'TSTOCKTRANS') > 0 THEN
DBMS_OUTPUT.PUT_LINE(CR.VIEW_NAME); --조건에 맞는 VIEW 이름
END IF;
END LOOP;
END;
주의점 : VIEW내용이 많아 TEXT의 크기가 크다면 VARCHAR 크기를 늘려주거나 CLOB을 이용하는 게 좋을 듯 하다.