Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-16
제목 LONG COLUMN을 가진 테이블을 COPY
LONG COLUMN을 가진 테이블을 COPY를 해야 하는 경우 LONG COLUMN은 Subquery
를 사용할 수 없기 때문에 다음과 같은 현상이 발생한다.

1. "CREATE TABLE ... AS SELECT ..." 명령이나
"INSERT INTO ... SELECT ..."
를 사용하는 경우 ORA-0997 에러가 발생한다.

2. SQL*Plus의 COPY 명령을 사용하는 경우 CPY0005 에러가 발생한다.

해결 방법
=========
가장 쉬운 방법은 PL/SQL에서 VARCHAR2 혹은 LONG DATA TYPE을 이용하여 COPY
한다. PL/SQL에서 VARCHAR2 및 LONG 변수는 32K까지 사용할 수 있기 때문에
32K 이하 데이타라면 가능하고 그 이상의 데이타는 3GL을 이용한다.

< TABLE >
SQL> CREATE TABLE LONGTAB(NO NUMBER(2), TEXT LONG);

< PL/SQL Script >

DECLARE
string varchar2(32000);
no number(2);
cursor c1 is
SELECT no, text FROM longtab;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO no, string;
exit when c1%NOTFOUND;
INSERT INTO longtab2 VALUES (no, string);
END LOOP;
COMMIt;
END;
/
Comment
등록된 코멘트가 없습니다.