/*
제어문 : 조건문, 반복문
- 조건문 : if문, case문
- 반복문 : basic loop문, while문(반복횟수를 정하지 않을 경우)
for문(반복횟수를 지정할 경우)
-- if문 : if~ end if문
if(조건) then
실행명령;
end if;
*/
set serveroutput on;
declare
emp_id employees.employee_id%type;
emp_name employees.last_name%type;
emp_dept employees.department_id%type;
dept_name varchar2(20) := null; -- null 넣기
begin
select employee_id, last_name, department_id
into emp_id, emp_name, emp_dept
from employees
where employee_id = 103;
-- elsif 사용
-- else if가 아닌 elsif!!
if(emp_dept = 50) then
dept_name := 'Shipping';
elsif(emp_dept = 60) then
dept_name := 'IT';
elsif(emp_dept = 70) then
dept_name := 'Public Relations';
elsif(emp_dept = 80) then
dept_name := 'Sales';
end if;
dbms_output.put_line(emp_id||' '||emp_name||' '||emp_dept||' '||dept_name);
end;
/
declare
emp_id employees.employee_id%type;
emp_name employees.last_name%type;
emp_comm employees.commission_pct%type := null; -- 초기값 null로
begin
select employee_id, last_name, commission_pct
into emp_id, emp_name, emp_comm
from employees
where employee_id = 145;
-- if else 구문
if(emp_comm > 0 ) then
dbms_output.put_line(emp_id || ' ' || emp_name || ' 의 보너스는 ' || emp_comm);
else
dbms_output.put_line(emp_id || ' ' || emp_name || ' 의 보너스는 없습니다.');
end if;
end;
/
/* case문 case식 */
declare
emp_id employees.employee_id%type;
emp_name employees.last_name%type;
emp_dept employees.department_id%type;
dept_name varchar2(20) := null;
begin
select employee_id, first_name, department_id
into emp_id, emp_name, emp_dept
from employees
where employee_id = '&empno'; -- 입력한 값(치환변수)로... (변수명 상관없음)
-- case when then 형식
dept_name := case emp_dept
when 50 then 'Shipping'
when 60 then 'IT'
when 70 then 'Public Relations'
when 80 then 'Salses'
end;
dbms_output.put_line(emp_id||' '||emp_name||' '||emp_dept||' '||dept_name);
end;
/