LONG_RAW 포함 테이블, 타 계정 테이블에 복사 0 2 3,315

by 생각 [PL/SQL] [2018.03.23 15:11:31]


안녕하세요.

LONG_RAW컬럼이 포함된 A 계정 테이블을 B 계정에 똑같은 테이블에 이관하려고 합니다.

INSERT A (SELECT ....) 는 LONG_RAW 데이터일 경우 안된다고 봐서, PL/SQL 로 진행하고 있습니다.

CREATE OR REPLACE PROCEDURE PR_BLOB_DATA
IS
  CURSOR CURSOR_NAME IS              
    SELECT aa,
           bb,          
           blob_data,          
    FROM A.BLOB_DATA_TABLE;
    BEGIN
      FOR I IN CURSOR_NAME LOOP
        INSERT INTO SARA_R.com_blob_data(
           aa,
           bb,          
           blob_data
          )
          VALUES(
           I.aa,
           I.bb,          
           I.blob_data);
      END LOOP;
END PR_BLOB_DATA;
/

해당 프로시저를 실행시 아래와 같은 오류가 발생합니다.

ORA-06502: PL/SQL: 수치 또는 값 오류: Bulk Bind: Truncated Bind
ORA-06512: "A.PR_BLOB_DATA",  24행
ORA-06512:  2행

begin
     PR_BLOB_DATA;
end;

관련하여 구글링 하여 살펴보니

https://stackoverflow.com/questions/22327222/ora-06502pl-sql-numeric-or-value-errorbulk-bind-truncated-bind

위 링크 가이드대로 A->B 테이블 이관시 B 테이블의 LONG RAW데이터 타입을 BLOB로 변경하여도 똑같이 위 오류가 발생합니다.

도움 부탁드리겠습니다.

by 생각 [2018.03.23 17:06:02]

자체 답변입니다.

LONG RAW 데이터 크기를 CURSOR에 담을수 없어 오류가 났고, 

해결방법은 기존 LONG RAW 데이터형을 LOB으로 컨버트 하여 새 테이블로 이관하는 방법이 있었고

데이터양이 많지 않을 때는 IMPORT/EXPORT가 가장 손 쉬운 방법인것 같네요.


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