PL/SQL 제어문 [반복제어(for loop, loop, while)/조건제어(if)]
반복제어
loop문
--Anonymous Procedure
--loop문
set serveroutput on
set verify off
declare
v_cnt number := 1;
v_str varchar2(20) := null;
begin
loop
v_str := v_str || '*';
dbms_output.put_line(v_str);
v_cnt := v_cnt + 1;
--loop문 종료조건
exit when v_cnt > 10;
end loop;
end;
/
set verify on
set serveroutput off
loop문 예제 (구구단 출력)
--loop문 (구구단)
set serveroutput on
set verify off
accept p_gugu prompt '구구단 입력할 숫자 : '
declare
v_gugu number := to_number(&p_gugu);
v_cnt number := 1;
v_gugucnt number := 0;
begin
if v_gugu > 9 or v_gugu < 2 then
dbms_output.put_line('2~9사이의 숫자를 넣어주세요');
else
loop
v_gugucnt := v_gugu * v_cnt;
dbms_output.put_line(v_gugu || ' * ' || v_cnt || ' = ' || v_gugucnt);
v_cnt := v_cnt + 1;
--loop문 종료조건
--exit when v_cnt > 9;
if v_cnt > 9 then
exit;
end if;
end loop;
end if;
end;
/
set verify on
set serveroutput off
while loop문
--while loop문
set serveroutput on
set verify off
declare
v_cnt number := 1;
v_str varchar2(20) := null;
begin
--조건문이 '참'일 경우 작동!
while v_cnt < 10 loop
v_str := v_str || '*';
dbms_output.put_line(v_str);
v_cnt := v_cnt + 1;
end loop;
end;
/
set verify on
set serveroutput off
for loop문
--For loop문
set serveroutput on
set verify off
declare
v_str varchar2(20) := null;
begin
for i_idx in 1..10 loop
v_str := v_str || '*';
dbms_output.put_line(v_str);
end loop;
end;
/
set verify on
set serveroutput off
조건제어
if문
--조건제어 (IF문)
set serveroutput on
set verify off
accept p_employee_id prompt '입력할 사원 번호 : '
declare
v_employee_id emp.employee_id%type := &p_employee_id;
v_salary emp.salary%type;
begin
select salary
into v_salary
from employees
where employee_id = v_employee_id;
--if문 시작
if v_salary > 5000 then
dbms_output.put_line('5000이상 사원' || v_employee_id);
else
dbms_output.put_line('5000이하 사원' || v_employee_id);
end if;
--if문 끝
end;
/
set verify on
set serveroutput off