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
;