Oracle
반복문(basic loop, while, for loop, continue)
봉프랑뜨앙떼
2017. 9. 15. 16:03
/* basic loop문 -- 일단 한 번 실행 후 종료조건 만족하면 종료 loop pl/sql 문장; exit 종료조건; end loop; */ set serveroutput on; declare num number := 0; begin loop dbms_output.put_line(num); num := num+1; exit when num > 10; end loop; end; / /* while문 -- 조건을 먼저 확인 후 실행 while 반복조건 loop 실행 문장; end loop; */ declare num number := 0; begin while num < 11 loop dbms_output.put_line(num); num:=num+1; end loop; end; / declare num number:=10; begin loop dbms_output.put_line(num); num:=num-1; exit when num = 0; end loop; end; / declare num number:=10; begin while num >= 0 loop dbms_output.put_line(num); num:=num-1; end loop; end; / /* For 문 : 반복횟수를 지정할 수 있다. 구문 형식 For n:카운트 횟수 IN start..end Loop 실행문장; end loop; */ -- for문은 변수가 필요없어서 따로 선언해줄 필요가 없다 begin for n in 0..10 loop dbms_output.put_line(n); end loop; end; / -- 역순 실행 begin for n in reverse 0..10 loop dbms_output.put_line(n); end loop; end; / /* 사원테이블에서 사원id를 입력받아서 사원 이름의 문자수만큼 # 출력하는 pl/sql문 */ declare emp_name employees.first_name%type; begin select first_name into emp_name from employees where employee_id='&empid'; dbms_output.put_line(emp_name); for n in 1..length(emp_name) loop dbms_output.put_line('#'); end loop; end; / declare emp_id employees.employee_id%type := &emp_num; emp_name employees.first_name%type; v_no number; v_char varchar2(30); begin select first_name, length(first_name) into emp_name, v_no from employees where employee_id = emp_id; dbms_output.put_line(emp_name); for n in 1..v_no loop v_char := v_char||'#'; dbms_output.put_line(v_char); end loop; end; / /* continue문 보조제어문(11g부터 추가된 기능) */ declare tot number := 0; begin for i in 1..10 loop tot := tot+1; dbms_output.put_line('tot : '||tot); continue when(i > 5); -- i가 5보다 크면 위로 올라가서 실행(더이상 아래로 실행X) tot := tot+i; dbms_output.put_line('tot2 : '||tot); end loop; end; /