검색결과 리스트
글
오라클 long 타입 insert
DB 이관문제로 INSERT INTO SELECT 문을 사용했다
보통 테이블이라면 (LONG타입이 없다면)
INSERT INTO TABLE1
SELECT * FROM TABLE2
하면, TABLE2의 내용이 전부 TABLE1에 삽입되게 된다. (여기서 TABLE1,2 는 컬럼, 속성이 같다)
하지만 LONG타입의 컬럼이 들어가있다면
ORA-00997: LONG 데이터 유형은 사용할 수 없습니다
이런 에러를 볼 수있다.
처음에는 INSERT INTO TALBL2 (MEMO) SELECT TO_LOB(MEMO) FROM TABLE2
이런식으로 LONG 타입을 LOB으로 변형시켜서 넣었다
에러는 안났는데
TABLE2에 데이터가 안들어가있는것이였다..ㅠㅠ
그래서....다시 인터넷 검색해서 찾아봤다.( 어렵게 찾았다 ㅠㅠ사실 내가 찾은것도 아니지만..)
DECLARE
BEGIN
DECLARE CURSOR CURSOR_NAME IS
SELECT BOARD_NUM, ROOT_NUM, PARENT_NUM, STEP, DEPTH, TITLE, WRITER, CONTENT,
CON_TYPE, INSERT_DATE, VISITED,EMAIL, IPADDR, PASSWD
FROM PLUS_BOARD;
BEGIN
FOR I IN CURSOR_NAME LOOP
INSERT INTO PLUS_BOARD2 (BOARD_NUM, ROOT_NUM, PARENT_NUM, STEP, DEPTH, TITLE, WRITER, CONTENT, CON_TYPE, INSERT_DATE, VISITED,EMAIL, IPADDR, PASSWD)
VALUES(I.BOARD_NUM, I.ROOT_NUM, I.PARENT_NUM, I.STEP, I.DEPTH, I.TITLE, I.WRITER, I.CONTENT, I.CON_TYPE, I.INSERT_DATE, I.VISITED,I.EMAIL, I.IPADDR, I.PASSWD);
END LOOP;
END;
END;
즉,
DECLARE
BEGIN
DECLARE CURSOR CURSOR_NAME IS
SELECT COLUMN1, COLUMN2 --테이블의 모든 컬럼을 넣어준다
FROM TABLE2;
BEGIN
FOR I IN CURSOR_NAME LOOP
INSERT INTO TABLE1 (COLUMN1, COLUMN2) --테이블의 모든 컬럼을 넣어준다
VALUES(I.COLUMN1, I.COLUMN2); --테이블의 모든 컬럼을 넣어준다
END LOOP;
END;
END;
원리는 모르겠지만 일단 성공은 했다.....
'개발 > 실전' 카테고리의 다른 글
하루동안 열지 않기 [쿠키] (0) | 2015.04.01 |
---|---|
checkbox 사용 (0) | 2014.10.29 |
getInstance() 란 무엇인가 (0) | 2014.06.18 |
현재시간함수 (0) | 2014.06.05 |
executeQuery, executeUpdate (0) | 2014.06.03 |