【MySQL】存储过程 —— if判断

一、介绍

if 用于做条件判断,具体的语法结构为:

IF  条件1  THEN 				-- 如果条件1成立,则执行THEN之后的SQL逻辑,否则就要去判断ELSEIF的条件2
    .....
ELSEIF  条件2  THEN       -- 可选
    .....
ELSE                     -- 可选
    .....
END  IF;								-- 整个语法块结束,要通过END IF来结束

在if条件判断的结构中,ELSE IF结构可以有多个,也可以没有。 ELSE结构可以有,也可以没有。


二、案例

根据定义的分数score变量,判定当前分数对应的分数等级。

  • score >= 85分,等级为优秀。
  • score >= 60分 且 score < 85分,等级为及格。
  • score < 60分,等级为不及格。
create procedure p3()
begin
    declare score int default 58;
    declare result varchar(10); -- 分数等级
    
    if score >= 85 then
        set result := '优秀';
    elseif score >= 60 then
        set result := '及格';
    else
        set result := '不及格';
    end if;
    select result;
    
end;

call p3();

上述的需求我们虽然已经实现了,但是也存在一些问题,比如:score 分数我们是在存储过程中定义死的,而且最终计算出来的分数等级,我们也仅仅是最终查询展示出来而已。

那么我们能不能,把score分数动态的传递进来,计算出来的分数等级是否可以作为返回值返回呢? 答案是肯定的,我们可以通过接下来所讲解的参数 来解决上述的问题。

MySQL存储过程中,可以使用IF语句进行流程控制。IF语句可以根据条件执行不同的代码块。存储过程中的IF语句通常用于根据输入参数的不同情况执行不同的逻辑。 具体操作步骤如下: 1. 首先,使用USE语句选择要使用的数据库,例如:USE school; 2. 使用DELIMITER语句设置分隔符为$$,这是因为存储过程中可能包含多条SQL语句,而默认的分隔符是分号,为了避免与其中的分号冲突,需要设置一个新的分隔符。 3. 创建存储过程,使用CREATE PROCEDURE语句,并指定输入参数和输出参数。在存储过程中,可以使用IF语句根据输入参数的值执行不同的逻辑。例如: ```sql CREATE PROCEDURE proc_test_if (IN input int, OUT output int) BEGIN IF input > 20 THEN SET input = input + 1; ELSEIF input = 20 THEN SET input = input + 2; ELSE SET input = input + 3; END IF; SET output = input; END; ``` 4. 创建完存储过程后,使用DELIMITER语句将分隔符设置为默认的分号。 5. 存储过程创建完成后,可以通过调用存储过程并传入参数来执行该存储过程。调用存储过程的方式可以使用CALL语句,例如:CALL proc_test_if(18, @result); 6. 在执行存储过程后,可以通过SELECT语句获取输出参数的值,例如:SELECT @result;<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL - 存储过程和函数_流程控制的使用(if条件语句详解)](https://blog.csdn.net/m0_45867846/article/details/107340943)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [MySQL存储过程——流程控制-if判断](https://blog.csdn.net/weixin_47723732/article/details/123583938)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值