PL/SQL - 반복문 2

jsbak·2020년 8월 31일
0

DB

목록 보기
24/35

일반 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;

profile
끄적끄적 쓰는곳

0개의 댓글