数据库Oracle与Mysql语法对比:分支结构

时间:2022-06-19 14:51:56

Oracle

分支结构是最基本的程序结构,分支结构由 IF 语句实现。 使用 IF 语句,根据条件可以改变程序的逻辑流程。IF 语句有如下的形式:
IF 条件 1 THEN
语句序列 1;
[ELSIF 条件 2 THEN
语句序列 2;
ELSE
语句序列 n;]
END IF;
其中:
条件部分是一个逻辑表达式,值只能是真(TRUE)、假(FALSE)或空(NULL)。
语句序列为多条可执行的语句。 根据具体情况,分支结构可以有以下几种形式:
IF-THEN-END IF
IF-THEN-ELSE-END IF
IF-THEN-ELSIF-ELSE-END IF

1.IF-THEN-END IF 形式

这是最简单的 IF 结构,练习如下:
【训练 1】 如果温度大于 30℃,则显示“温度偏高”。

    SET SERVEROUTPUT ON 
DECLARE
V_temprature NUMBER(5):=32;

V_result BOOLEAN:=false;
BEGIN
V_result:= v_temprature >30;

IF V_result THEN
DBMS_OUTPUT.PUT_LINE('温度'|| V_temprature ||'度,偏高');
END IF; END;

执行结果为: 温度 32 度,偏高

2.IF-THEN-ELSE-END IF 形式

【训练 2】 根据性别,显示尊称。

    SET SERVEROUTPUT ON  DECLARE 
v_sex VARCHAR2(2);
v_titil VARCHAR2(10);
BEGIN v_sex:='男';
IF v_sex ='男' THEN v_titil:='先生';
ELSE
v_titil:='女士';
END IF;
DBMS_OUTPUT.PUT_LINE(v_titil||'您好!'); END;

执行结果为: 先生您好!

3.IF-THEN-ELSIF-ELSE-END IF 形式

【训练 3】 根据雇员工资分级显示税金。

SET SERVEROUTPUT ON 
DECLARE v_sal NUMBER(5); v_tax NUMBER(5,2); BEGIN
SELECT sal INTO v_sal
FROM emp
WHERE empno=7788;
IF v_sal >=3000 THEN
V_tax:= v_sal*0.08;--税率 8%
ELSIF v_sal>=1500 THEN
V_tax:= v_sal*0.06; --税率 6% ELSE
V_tax:= v_sal*0.04; --税率 4%
END IF;
DBMS_OUTPUT.PUT_LINE('应缴税金:'||V_tax);
END;

执行结果为: 应缴税金:240

Mysql

1.IF-THEN-END IF 形式

这是最简单的 IF 结构,练习如下:
【训练 1】 如果温度大于 30℃,则显示“温度偏高”。

DELIMITER $$
drop procedure if exists temprature$$
create procedure temprature()
BEGIN
DECLARE V_temprature int(5) default 32;

DECLARE V_result BOOLEAN default false;
set V_result = v_temprature >30;
IF V_result THEN
select '偏高';
else select '偏低';
END IF;
END$$

call temprature();

2.IF-THEN-ELSE-END IF 形式

【训练 2】 根据性别,显示尊称。

DELIMITER $$
drop procedure if exists sex$$
create procedure sex()
BEGIN
DECLARE v_sex VARCHAR(2) default '男';

DECLARE v_titil VARCHAR(10);
IF v_sex ='男'
THEN set v_titil='先生';
ELSE
set v_titil='女士';
END IF;
select v_titil;
END$$

call sex();

3.IF-THEN-ELSIF-ELSE-END IF 形式

【训练 3】 根据雇员工资分级显示税金。

DELIMITER $$
drop procedure if exists sp$$
create procedure sp()
BEGIN
DECLARE v_sal int(5);

DECLARE v_tax numeric(5,2);
SELECT sal INTO v_sal
FROM emp
WHERE empno=7788;
IF v_sal >=3000 THEN
set V_tax= v_sal*0.08;
elseif v_sal>=1500 THEN
set V_tax= v_sal*0.06;
set V_tax= v_sal*0.04;
end if;
select v_tax as '应缴税金';
END$$
call sp();