相当于java中的if else语句
IF 布尔表达式 THEN
PL/SQL 和 SQL 语句;
END IF;
IF 布尔表达式 THEN
PL/SQL 和 SQL 语句;
ELSE
其它语句;
END IF;
IF 布尔表达式 THEN
PL/SQL 和 SQL 语句;
ELSIF 其它布尔表达式 THEN
其它语句;
ELSIF 其它布尔表达式 THEN
其它语句;
ELSE
其它语句;
END IF;
提示: ELSIF 不能写成 ELSEIF
要求: 查询出 150号 员工的工资, 若其工资大于或等于 10000 则打印 ‘salary >= 10000‘;
若在 5000 到 10000 之间, 则打印 ‘5000<= salary < 10000‘; 否则打印 ‘salary < 5000‘
declare v_sal employees.salary%type; begin select salary into v_sal from employees where employee_id=100; if v_sal>=10000 then dbms_output.put_line(‘salary>=10000‘); elsif v_sal>=5000 then dbms_output.put_line(‘5000<=salary<10000‘); else dbms_output.put_line(‘salary<5000‘); end if; end;
case表达式
CASE selector
WHEN expression1 THEN result1
WHEN expression2 THEN result2
WHEN expressionN THEN resultN
[ ELSE resultN+1]
END;
例子:要求: 查询出 150号 员工的工资, 若其工资大于或等于 10000 则打印 ‘salary >= 10000‘;
若在 5000 到 10000 之间, 则打印 ‘5000<= salary < 10000‘; 否则打印 ‘salary < 5000‘
declare v_sal employees.salary%type; v_temp varchar2(30); begin select salary into v_sal from employees where employee_id=100; v_temp:= case trunc(v_sal/50000) when 2 then ‘salary>=10000‘ when 1 then ‘5000<=salary<10000‘ else ‘salary<5000‘ end; dbms_output.put_line(v_sal||‘,‘||v_temp); end;
要求: 查询出 122 号员工的 JOB_ID, 若其值为 ‘IT_PROG‘, 则打印 ‘GRADE: A‘;
‘AC_MGT‘, 打印 ‘GRADE B‘,
‘AC_ACCOUNT‘, 打印 ‘GRADE C‘;
否则打印 ‘GRADE D‘
/SQL> declare 2 v_job_id varchar2(10); 3 v_temp varchar2(10); 4 begin 5 select job_id into v_job_id from employees where employee_id=100; 6 v_temp:= 7 case v_job_id when ‘IT_PROG‘ then ‘A‘ 8 when ‘AC_MGT‘ then ‘B‘ 9 when ‘AC_ACCOUNT‘ then ‘C‘ 10 else ‘D‘ 11 end; 12 dbms_output.put_line(v_job_id||‘,‘||v_temp); 13 end;
原文地址:https://www.cnblogs.com/h-dada/p/9069108.html