SQL*Plus

LONG COLUMN을 가진 TABLE의 COPY

OEasy 2006. 11. 2. 11:37
 
BULLETIN CATEGORY
BULLETIN TOPIC
: SQL*Plus    
: LONG COLUMN을 가진 TABLE의 COPY

LONG COLUMN 을 가진 테이블을 COPY 를 해야 하는경우 LONG COLUMN은 SUB-QUERY를 사용 할수 없기때문에 다음과 같은 현상이 발생한다.    
    
  1. "CREATE TABLE .. AS SELECT .." 명령이나    
     "INSERT INTO .. SELECT .." 를 사용하는 경우 ORA-00997 에러가 발생한다.
    
  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);      
BEGIN    
  SELECT no,longcolumn INTO no, string FROM longtable;        
  INSERT INTO longtab VALUES(no, string);   
END;   
/   
   
 


Oracle Korea Customer Support Technical Bulletins
  

'SQL*Plus' 카테고리의 다른 글

Count the number of rows for ALL tables in current schema  (0) 2006.12.26
Who am I" script  (0) 2006.12.26
DATE의 기간을 계산하는 방법  (0) 2006.11.02
DYNAMIC SQL  (0) 2006.11.02
특정조건의 순서대로 번호를 부여하는 방법  (0) 2006.10.30