ORACLE 的if else

本文通过示例介绍了SQL中Case与Decode函数的应用方法,包括如何使用这些函数进行条件判断并返回相应值,适用于数据库操作及数据处理场景。
a.
select
(case score when 0 then '无成绩' else '有成绩' end) as score
from table

select
(case score when 0 then '无成绩' when 60 then '好成绩' else '有成绩' end) as score
from table

b.
select
decode(score,0,'无成绩',20,'低成绩',60,'过得去','好成绩') as score
from table

-- 最后的好成绩是默认
Oracle 数据库中实现 `IF-ELSE` 逻辑主要通过 PL/SQL 编程语言完成,PL/SQL 是 Oracle 对 SQL 的扩展,支持过程化编程结构。可以使用 `IF-ELSIF-ELSE` 语句来实现条件判断逻辑。以下是实现 `IF-ELSE` 逻辑的几种方式: ### 1. 在匿名块中使用 IF-ELSE PL/SQL 的匿名块可以直接在 SQL Developer 或其他 Oracle 客户端中执行: ```plsql BEGIN IF 10 > 5 THEN DBMS_OUTPUT.PUT_LINE('10 大于 5'); ELSE DBMS_OUTPUT.PUT_LINE('10 不大于 5'); END IF; END; ``` ### 2. 在存储过程中使用 IF-ELSE 可以将 `IF-ELSE` 逻辑封装到存储过程中,以便复用和调用: ```plsql CREATE OR REPLACE PROCEDURE check_salary(p_salary NUMBER) IS BEGIN IF p_salary > 5000 THEN DBMS_OUTPUT.PUT_LINE('薪资高于 5000'); ELSE DBMS_OUTPUT.PUT_LINE('薪资低于或等于 5000'); END IF; END; ``` 调用存储过程: ```plsql EXEC check_salary(6000); ``` ### 3. 在函数中使用 IF-ELSE PL/SQL 函数也可以包含条件判断逻辑,并返回结果: ```plsql CREATE OR REPLACE FUNCTION get_bonus(p_salary NUMBER) RETURN NUMBER IS v_bonus NUMBER; BEGIN IF p_salary > 10000 THEN v_bonus := p_salary * 0.1; ELSE v_bonus := p_salary * 0.05; END IF; RETURN v_bonus; END; ``` 调用函数: ```plsql SELECT get_bonus(12000) FROM dual; ``` ### 4. 在触发器中使用 IF-ELSE 触发器中也可以使用条件判断逻辑,例如在插入或更新数据时进行校验: ```plsql CREATE OR REPLACE TRIGGER check_age_before_insert BEFORE INSERT ON employees FOR EACH ROW BEGIN IF :NEW.age < 18 THEN RAISE_APPLICATION_ERROR(-20001, '年龄必须大于等于 18'); END IF; END; ``` ### 5. 在 SQL 查询中模拟 IF-ELSE 如果需要在 SQL 查询中实现条件判断,可以使用 `CASE` 表达式: ```sql SELECT employee_name, CASE WHEN salary > 10000 THEN '高薪' ELSE '普通' END AS salary_level FROM employees; ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值