일반 FOR문
- 다른 애플리케이션 개발언어의 FOR문의 역할
- 사용형식
FOR 인덱스 IN [REVERSE] 초기값..최종값 LOOP 반복처리문; END LOOP; . 인덱스를 시스템에서 제공(선언하지 않음)
예시)구구단 7단을 출력
declare v_base number := 7; v_result varchar2(30); begin for i in 1..9 loop v_result:=v_base||'*'||i||'='||v_base*i; dbms_output.put_line(v_result); end loop; end;
declare v_base number := 7; v_result varchar2(30); begin for i in reverse 1..9 loop -- 리버스 v_result:=v_base||'*'||i||'='||v_base*i; dbms_output.put_line(v_result); end loop; end;
CURSOR를 사용하는 FOR문
- 사용형식
FOR 레코드명 IN (subquery) LOOP 처리문; END LOOP; . subquery : 커서역할을 하는 sql
예시)키보드로 직업을 입력 받아 해당 직업을 가진
회원의 이름, 직업, 마일리지를 출력하는 커서를 for문을 이용하여 작성accept p_job prompt '직업 : ' declare cursor cur_mem_job is select mem_name, mem_job, mem_mileage from member where mem_job='&p_job'; begin for rec_mem in cur_mem_job loop --rec_mem가 행을 한번씩 흩음. dbms_output.put_line('회원명: '||rec_mem.mem_name||', 직업: '|| rec_mem.mem_job||', 마일리지: '||rec_mem.mem_mileage); end loop; end;
** inline_for accept p_job prompt '직업 : ' declare begin --rec_mem가 행을 한번씩 흩음. for rec_mem in (select mem_name, mem_job, mem_mileage from member where mem_job='&p_job') loop dbms_output.put_line('회원명: '||rec_mem.mem_name||', 직업: '|| rec_mem.mem_job||', 마일리지: '||rec_mem.mem_mileage); end loop; end;