mysql if 和 case when 用法 多个when情况用一个语句 存储过程

 

在实际开发中,经常会用到 if 和 case when的用法,记录一下,以后可以用得到.
 
 

DELIMITER $$

USE

`数据库`$$

DROPPROCEDUREIFEXISTS

`GetNoticemsg`$$

CREATE

DEFINER=`root`@`%`

PROCEDURE

`GetNoticemsg`(p_Id

VARCHAR

(64),p_InTime

DATETIME

,p_FunctionId

INT

,p_PersonType

INT

,p_GetType

INT

)

BEGIN

-- GetType 0:获取已发通知,1获取已收通知 -- PersonType 0:家长 1:老师

IF

(p_GetType=0)

THEN

-- 获取已经发送的

IF

(p_PersonType=1)

THEN

-- 如果是老师 (那么就是查询一张表就OK了,只需要查询主表)

CASEWHEN

p_FunctionId=101

THEN

-- 作业

SELECT

'这里写你的代码';

WHEN

p_FunctionId

IN

(102,103,105,106)

THEN

-- 多个情况用一个语句

SELECT

'这里写你的代码';

ENDCASE

; -- else -- 如果是家长,因为家长不可能发送任何通知,所以这里什么都不返回

ENDIF

; ELSEIF(p_GetType=1)

THEN

-- 获取已经收到的通知

IF

(p_PersonType=1)

THEN

-- 如果是老师,老师只能收到 通知老师103的通知,其他的都收不到

CASE

p_FunctionId

WHEN

103

THENSELECT

'这里写你的代码';

ENDCASE

;

ELSE

--

CASEWHEN

p_FunctionId=101

THENSELECT

'这里写你的代码';

WHEN

p_FunctionId

IN

(102,105,106)

THEN

-- 多个情况用一个语句

SELECT

'这里写你的代码';

ENDCASE

;

ENDIF

;

ENDIF

;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值