본문 바로가기

프로그램/oracle

오라클 LONG 타입 체크 임시 프로시져

반응형

목적 : 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을 이용하는 게 좋을 듯 하다.