四、条件控制
一、条件控制
if 条件 then
结构体 (elsif,else)
end if;
1、wpq工资如果大于900奖金发800:
DECLARE
newSal emp.sal%TYPE;
BEGIN
SELECT sal INTO newSAL FROM emp where ename=’wpq’;
IF newSal>900 THEN --如果条件成立则执行THEN后面的内容
update emp Set COMM=800 name where ename=’wpq’;
END IF;
dbms_output.put_line(newSal);
END;
2、Elsif:工资如果大于1500奖金发100,大于900发800,其他400
DECLARE
newSal emp.sal%TYPE;
BEGIN
SELECT sal INTO newSal from emp WHERE ENAME='mary';
IF newSal>1500 THEN
UPDATE emp SET comm=100 WHERE ENAME='mary';
ELSIF newSal>900 THEN
UPDATE emp SET comm=800 WHERE ENAME='mary';
ELSE
UPDATE emp SET comm=400 WHERE ename='mary';
END IF;
END;
二、CASE:
--CASE[selector]
-- WHEN 表达式1 THEN 语句序列1
-- WHEN 表达式2 THEN 语句序列2
1、实例:
DECLARE
v_grade CHAR(1):=UPPER('&agrade'); --upper(‘&agrade’)输入一个字符
BEGIN
CASE v_grade
WHEN 'A' THEN
dbms_output.put_line('Excellent');
WHEN 'B' THEN
dbms_output.put_line('Very Good');
WHEN 'C' THEN
dbms_output.put_line('Good');
ELSE--注意这里用else
dbms_output.put_line('NO such grade');
END CASE;
END;
2、CASE做表达式使用:
DECLARE
v_grade CHAR(1):=UPPER('&grade');--upper(‘&grade’)输入字符函数
p_grade VARCHAR(20);
BEGIN
p_grade:=
CASE v_grade
WHEN 'A' THEN
'Excellent'
WHEN 'B' THEN
'Very Good'
WHEN 'C' THEN
'Good'
ELSE
'no'
end ;--注意这里是end 而不是end case
dbms_output.put_line(p_grade);
END;