在实际开发中,经常会用到 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

;

mysql if 和 case when 用法 多个when情况用一个语句 存储过程的更多相关文章

  1. oracle中DECODE与CASE的用法区别

    对于CASE与DECODE其实并没有太多的区别,他们都是用来实现逻辑判断.Oracle的DECODE函数功能很强,灵活运用的话可以避免多次扫描,从而提高查询的性能.而CASE是9i以后提供的语法,这个 ...

  2. MySQL中的case when 中对于NULL值判断的坑

    sql中的case when 有点类似于Java中的switch语句,比较灵活,但是在Mysql中对于Null的处理有点特殊 Mysql中case when语法: 语法1: CASE case_val ...

  3. Mysql coalesce()函数认识和用法

    Mysql coalesce()函数认识和用法   coalesce()解释:返回参数中的第一个非空表达式(从左向右):    鉴于在mysql中没有nvl()函数, 我们用coalesce()来代替 ...

  4. Oracle CASE WHEN 用法介绍

    1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索 ...

  5. mysql中INSTR函数的用法

    mysql中INSTR函数的用法 INSTR(字段名, 字符串) 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) SELECT * FROM tblTo ...

  6. Oracle CASE WHEN 用法介绍[Z]

    Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...

  7. mysql语法之case when then与列转行

    mysql语法中case when then与列转行的使用场景非常丰富. case语句类似java中条件分支语句的作用,可以类比java中的switch语句或者if语句来学习. 其语法如下: case ...

  8. oracle case when 用法

    原文:http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html 1. CASE WHEN 表达式有两种形式 --简单Case函数 ...

  9. MySQL中INSERT的一般用法

    原文链接:http://www.blogjava.net/midnightPigMan/archive/2014/12/15/421406.html MySQL中INSERT的一般用法 INSERT语 ...

随机推荐

  1. java 连接池的简单实现

    最近一个项目中需要自己写个连接池, 写了一个下午,挺辛苦的,但不知道会不会出问题, 所以,贴到博客上,欢迎各路大神指点 1. 配置信息: /** * */ package cn.mjorcen.db. ...

  2. php缓存

    APC缓存退出舞台,APCU诞生,OPCACHE升级! 对于php5.5以后的新版本开发,使用apc习惯的开发者可能会发现php.5.5以后找不到了这个组件的更新,尤其是中文phper都找不到合适的资 ...

  3. SVN检出资源文件

    一.选择new,输入svn,点击“从SVN检出项目” 二.选择“创建新的资源库位置”或“使用现有的资源库位置”(如果是新建,则需要地址和用户名.密码) 三.从现有的资源库选中项目

  4. DevExpress控件使用系列--ASPxUploadControl(图片上传及预览)

        1.控件功能     列表控件展示数据.弹框控件执行编辑操作.Tab控件实现多标签编辑操官方说明 2.官方示例       2.1 ASPxImage                http: ...

  5. sun.misc.unsafe类的使用

    http://blog.csdn.net/fenglibing/article/details/17138079

  6. 空格的URL编码

    Q: 为什么我看的教材一会说是“+” 一会说是“%20” A: urlencode(" ") '返回+encodeURI(" ") '返回%20是有区别的

  7. [主席树]SPOJ DQUERY

    题目链接 题意:n个数 m个查询 查询的是[l, r]区间内不相同的数的个数 没有修改,因此静态的主席树就好了 将重复的元素建树即可 query的时候加起来,用区间长度(r-l+1)去减就是答案 (q ...

  8. iOS开发网络篇-NSURLSession介绍

    NSURLSession: 作用: 和NSURLConnection一样 1.负责发送请求,建立客户端和服务器的连接发送数据给服务器 2.并收集来自服务器的响应数据 步骤: 1.创建NSURLSess ...

  9. NSArray 利用数组创建数组

    NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3", nil];         ...

  10. SSH公钥认证登录

    概述: SSH登录的认证方式分为两种,一种是使用用户名密码的方式,另一种就是通过公钥认证的方式进行访问, 用户名密码登录的方式没什么好说的,本文主要介绍通过公钥认证的方式进行登录. 思路: 在客户端生 ...