PL/SQL for 문

2011-11-11

기억을 위한 메모용이라고 되어 있는 글을 복구.

상황 몇 개 게시판의 글 내용을 모두 하나의 게시판(id=111)으로 옮겨야 했다. 게시판은 글 제목과 글 번호가 있는 board게시판이 하나, 글내용과 글 번호, 내용 순서 번호가 들어있는 contents게시판이 하나 있는 상황이었다. 게시판이 이 상황이 된 이유는, 언제적인지 모르지만, 한 컬럼에 들어가는 용량제한이 있었던 모양이고, 그 용량제한을 회피하고자 이렇게 짠 모양인데… 문제는 소스가 잘못되서 제한보다 훨씬 적은 용량으로 글을 잘랐… 일단 그래서 간단히 PL/SQL을 짜 봤다.

기본 구조는 이렇다. 이동할 게시판(111)의 가장 끝 글 번호를 알아내고 그걸 적당한 변수에 넣는다. for 문을 돌려 대상 게시판(1,2,3)의 글을 한 행씩 받아온다. 그 다음 각 행의 글 번호를 변수값과 같게 맞춰주고, 게시판 번호를 옮겨준다. 이렇게 적고 보니 좀 그런게, 그냥 PK만 받아온 다음 update를 돌려도 되지 않았을까 싶다. 생각해 보니 그 테이블에 PK가 한 컬럼이 아니라 여러 컬럼 묶음이었나 없었나 그랬던 것 같다. 자세한 건 기억이 안 난다. 여하튼 아래의 소스는 그렇게 PK를 받아오게 수정… 한 소스다. 뭔가 좀 틀렸을 수도 있지만, 그건 오라클님이 친절히 틀렸다고 가르쳐 줄 테니 문제없겠지. declare V_lower number;

BEGIN

select max(seq) into V_lower from board where id=111;

FOR x in (select seq from board where_) loop V_lower := V_lower +1; END LOOP; END;

성공과 실패를 결정하는 1%의 비트 원리 대머리 예찬