您的位置:首页 > 数据库 > Oracle

数据库Oracle与Mysql语法对比:选择结构

2016-11-11 14:07 441 查看
CASE 语句适用于分情况的多分支处理,可有以下三种用法。

Oracle

1.基本 CASE 结构

语句的语法如下: CASE 选择变量名

WHEN 表达式 1 THEN 语句序列 1 WHEN 表达式 2 THEN 语句序列 2

WHEN 表达式 n THEN 语句序列 n ELSE 语句序列 n+1 END CASE;

在整个结构中,选择变量的值同表达式的值进行顺序匹配,如果相等,则执行相应的

语句序列,如果不等,则执行 ELSE 部分的语句序列。 以下是一个使用 CASE 选择结构的练习。

【训练 1】 使用 CASE 结构实现职务转换。 输入并执行程序:

SET SERVEROUTPUT ON DECLARE
v_job  VARCHAR2(10);
BEGIN
SELECT job INTO v_job
FROM emp
WHERE empno=7788;
CASE v_job
WHEN 'PRESIDENT' THEN
DBMS_OUTPUT.PUT_LINE('雇员职务:总裁'); WHEN 'MANAGER' THEN
DBMS_OUTPUT.PUT_LINE('雇员职务:经理');
WHEN 'SALESMAN' THEN
DBMS_OUTPUT.PUT_LINE('雇员职务:推销员');
WHEN 'ANALYST' THEN
DBMS_OUTPUT.PUT_LINE('雇员职务:系统分析员');
WHEN 'CLERK' THEN
DBMS_OUTPUT.PUT_LINE('雇员职务:职员'); ELSE
DBMS_OUTPUT.PUT_LINE('雇员职务:未知'); END CASE;
END;


执行结果:

雇员职务:系统分析员

2.表达式结构 CASE 语句 在 Oracle 中,CASE 结构还能以赋值表达式的形式出现,它根据选择变量的值求得不同的结果。

它的基本结构如下: 变量=CASE 选择变量名 WHEN 表达式 1 THEN 值 1

WHEN 表达式 2 THEN 值 2

WHEN 表达式 n THEN 值 n

ELSE 值 n+1

END;

【训练 2】 使用 CASE 的表达式结构。

SET SERVEROUTPUT ON     DECLARE
v_grade   VARCHAR2(10);         v_result      VARCHAR2(10);
BEGIN
v_grade:='B';           v_result:=CASE v_grade          WHEN 'A' THEN '优'
WHEN 'B' THEN '良'
WHEN 'C' THEN '中'
WHEN 'D' THEN '差'
ELSE '未知'
END;
DBMS_OUTPUT.PUT_LINE('评价等级:'||V_result);    END;


执行结果为: 评价等级:良

3.搜索 CASE 结构

Oracle 还提供了一种搜索 CASE 结构,它没有选择变量,直接判断条件表达式的值,根据条件表达式决定转向。

CASE

WHEN 条件表达式 1 THEN 语句序列 1 WHEN 条件表达式 2 THEN 语句序列 2

WHEN 条件表达式 n THEN 语句序列 n

ELSE

语句序列 n+1 END CASE;

【训练 3】 使用 CASE 的搜索结构。

SET SERVEROUTPUT ON     DECLARE
v_sal NUMBER(5);
BEGIN
SELECT sal INTO v_sal FROM emp
WHERE empno=7788;
CASE
WHEN v_sal>=3000 THEN
DBMS_OUTPUT.PUT_LINE('工资等级:高');
WHEN v_sal>=1500 THEN
DBMS_OUTPUT.PUT_LINE('工资等级:中');     ELSE
DBMS_OUTPUT.PUT_LINE('工资等级:低'); END CASE;
END;


执行结果为: 工资等级:高

Mysql

语法基本与Oracle一致。

例:

【训练 1】 使用 CASE 结构实现职务转换。

DELIMITER $$
create procedure case1()
BEGIN
DECLARE v_job  VARCHAR(10);
SELECT job INTO v_job
FROM emp
WHERE empno=7788;
CASE v_job
WHEN 'PRESIDENT' THEN
select '雇员职务:总裁';
WHEN 'MANAGER' THEN
select'雇员职务:经理';
WHEN 'SALESMAN' THEN
select'雇员职务:推销员';
WHEN 'ANALYST' THEN
select'雇员职务:系统分析员';
WHEN 'CLERK' THEN
select'雇员职务:职员';
ELSE
select'雇员职务:未知';
END CASE;
END$$

call case1();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: