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;