데이터 이관작업중 table에 속한 컬럼명을 일괄 바꾸는 작업을 해야합니다. 0 1 2,607

by 김태열 [SQL Query] [2024.05.30 07:32:43]


안녕하세요 

데이터 이관작업중 table에 속한 컬럼명을 일괄 바꾸는 작업을 해야합니다.

예를 들어 CARID컬럼이 속한 모든 테이블을 CAR_ID로 변경해야하는데..

일괄변경하는법이 있을까요?

by 마농 [2024.05.30 09:21:30]
SET SERVEROUTPUT ON;

DECLARE
    v_old VARCHAR2(20)  := 'CARID';
    v_new VARCHAR2(20)  := 'CAR_ID';
    v_sql VARCHAR2(200) := 'ALTER TABLE xxx RENAME COLUMN '||v_old||' TO '||v_new;
    v_exc VARCHAR2(200);
    CURSOR c1 IS
    SELECT b.table_name
      FROM user_tables a
         , user_tab_columns b
     WHERE a.table_name = b.table_name
       AND b.column_name = v_old
    ;
BEGIN
    FOR c2 IN c1
    LOOP
        BEGIN
            v_exc := REPLACE(v_sql, 'xxx', c2.table_name);
            EXECUTE IMMEDIATE(v_exc);
            dbms_output.put_line(c2.table_name || ' SUCCESS');
        EXCEPTION
            WHEN OTHERS THEN
                dbms_output.put_line(c2.table_name || ' FAIL');
                dbms_output.put_line(SQLCODE ||' '|| SQLERRM);
        END;
    END LOOP;
END;
/

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입