[ ORACLE 조건문(IF,CASE) ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | /* [ 제어문 ] : 조건문, 반복문 - 조건문 : if문, case 문(switch문과 유사) - 반복문 : basic loop문, while문(반복횟수를 정하지 않을 경우) : for 문(반복횟수 지정할 경우) // if문 : if ~ end if EX) if(조건) then 실행명령; elsif(조건) then 실행명령; else 실행명령; end if; // case 문 EX) case 변수명 when 값1 then 실행명령; when 값2 then 실행명령; ... end ; */ set serveroutput on ; -- if문 Ex) 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, last_name, department_id into emp_id,emp_name,emp_dept from employees where employee_id = 124; if(emp_dept = 50) then --if문 시작 dept_name := 'Shipping' ; end if; if(emp_dept = 60) then dept_name := 'IT' ; end if; if(emp_dept = 70) then dept_name := 'Public Relation' ; 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_dept employees.department_id%type; dept_name varchar2(20) := null ; begin select employee_id, last_name, department_id into emp_id,emp_name,emp_dept from employees where employee_id = 103; if(emp_dept = 50) then dept_name := 'Shipping' ; elsif(emp_dept = 60) then -- elseif가 아니라 elsif임을 주의... dept_name := 'IT' ; elsif(emp_dept = 70) then dept_name := 'Public Relation' ; ELSE dept_name := 'Other' ; 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 ; begin select employee_id, last_name, commission_pct into emp_id, emp_name, emp_comm from employees where employee_id = 130; if (emp_comm > 0) then dbms_output.put_line(emp_id|| ' 의 보너스는 ' ||emp_comm); else DBMS_OUTPUT.PUT_LINE(emp_id|| '의 보너스는 없습니다.' ); end if; end ; / -- case문 EX) 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, last_name, department_id into emp_id, emp_name, emp_dept from employees where employee_id = &empno; --치환변수 이용해 사용자로부터 입력받음 dept_name := case emp_dept when 50 then 'Shipping' when 60 then 'IT' when 70 then 'Public Relation' when 80 then 'Sales' end ; DBMS_OUTPUT.PUT_LINE(dept_name); end ; / |
'스터디 > DB(ORACLE)' 카테고리의 다른 글
ORACLE 커서(CURSOR) - (7) (0) | 2017.09.15 |
---|---|
ORACLE 반복문(basic loop, while, for, continue) -(6) (0) | 2017.09.14 |
ORACLE TABLE TYPE(컬렉션), 바인드 변수 -(4) (0) | 2017.09.14 |
ORACLE PL/SQL rowType 변수 및 복합변수 활용 예 -(3) (0) | 2017.09.13 |
ORACLE PL/SQL 변수 선언 및 데이터 타입 - (2) (0) | 2017.09.12 |