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();