ORACLE/PL/SQL

PL/SQL 제어문 [반복제어(for loop, loop, while)/조건제어(if)]

zammanza 2013. 2. 22. 16:55

반복제어


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문 예제 (구구단 출력)

--Anonymous Procedure

--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문

--Anonymous Procedure

--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문

--Anonymous Procedure

--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문

--Anonymous Procedure

--조건제어 (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