平时在工作中写过很多存储过程,但有时候对某些存储过程还是有些困惑的,所以发一篇文章记录下。

标准存储过程写法

create procedure`myQueryTask`(
IN Task_No VARCHAR(100),
IN aLevel TINYINT,
IN aTask_Plan TINYINT,
IN aSTATUS TINYINT,
IN aTask_Type TINYINT,
IN Start_Time VARCHAR(20),
IN End_Time VARCHAR(20),
IN Tel VARCHAR(100),
IN Package_Name VARCHAR(255),
IN Operator_Account VARCHAR(50),
IN aStart INT,
IN size INT,
IN flag INT)
BEGIN
SET @aTask_No=IF(LENGTH(Task_No)=0,NULL,Task_No);

SET @aLevel = alevel;
SET @aTask_Plan = aTask_Plan;
SET @aStatus = aStatus;
SET @aTask_Type = aTask_Type;
SET @aStart_Time=IF(LENGTH(Start_Time)=0,NULL,Start_Time);
SET @aEnd_Time=IF(LENGTH(End_Time)=0,NULL,End_Time);
SET @aTel=IF(LENGTH(Tel)=0,NULL,Tel);
SET @aPackage_Name=IF(LENGTH(Package_Name)=0,NULL,Package_Name);
SET @aOperator_Account=IF(LENGTH(Operator_Account)=0,NULL,Operator_Account);
SET @var_start = aStart ;
SET @var_limit = size;
SET @aflag = flag ;

SET @aSql='SELECT t.Id,t.Task_No,Task_Type,Task_Plan,t.LEVEL,t.STATUS,t.Retry_No,t.Result_Code,t.Create_Time,t.Start_time,t.End_time,t.Update_Time,t.Operator_Name,t.Operator_Account,TA,TSA,TEA,t.Memo,Busi_Type,Tel,t.Result_Memo,Package_Name,tl.name FROM T_Task t,T_Task_List tl WHERE t.Task_No=tl.Task_No';
SET @conSql='SELECT count(*) FROM T_Task t,T_Task_List tl where t.Task_No=tl.Task_No ';
SET @whereSql='';
SET @excSql='';
IF(@aTask_No IS NOT NULL) THEN
    SET @whereSql=CONCAT(' and t.task_no="',@aTask_No,'"');
END IF;
IF(@aLevel > -1) THEN
    SET @whereSql=CONCAT(@whereSql,' and t.Level=',@aLevel);
END IF;
IF(@aTask_Plan > -1) THEN
    SET @whereSql=CONCAT(@whereSql,' and t.Task_Plan=',@aTask_Plan);
END IF;
IF(@aStatus > -1) THEN
    SET @whereSql=CONCAT(@whereSql,' and t.Status=',@aStatus);
END IF;
IF(@aTask_Type > -1) THEN
    SET @whereSql=CONCAT(@whereSql,' and t.Task_Type=',@aTask_Type);
END IF;
IF(@aStart_Time IS NOT NULL) THEN
     SET @whereSql=CONCAT(@whereSql,' and t.Start_Time>"',@aStart_Time,' 23:59:59"');
END IF;
IF(@aEnd_Time IS NOT NULL) THEN
     SET @whereSql=CONCAT(@whereSql,' and t.End_Time<"',@aEnd_Time,' 00:00:00"');
END IF;
IF(@aTel IS NOT NULL) THEN
    SET @whereSql=CONCAT(@whereSql,' and tl.Tel="',@aTel,'"');
END IF;
IF(@aPackage_Name IS NOT NULL) THEN
    SET @whereSql=CONCAT(@whereSql,' and tl.Package_Name="',@aPackage_Name,'"');
END IF;
IF(@aOperator_Account IS NOT NULL) THEN
    SET @whereSql=CONCAT(@whereSql,' and t.Operator_Account="',@aOperator_Account,'"');
END IF;

IF(flag=0) THEN
          SET @excSql=CONCAT(@conSql,@whereSql);
    ELSE
         SET @excSql=CONCAT(@aSql,@whereSql,' ORDER BY create_time DESC ',' limit ',aStart,',',size);
END IF;
SET @excSql=REPLACE(@excSql,'\'\'','\'');
  SET @excSql=REPLACE(@excSql,'\\','');
   insert into T_Temp(value) values(@excSql);
  PREPARE stmt FROM @excSql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END

 

如果想在sql语句里面实现多条件查询,则用这种方式

SELECT tel,name AS user_name,business_code,product_name,IFNULL(current_credit,0) AS current_credit,IFNULL(used_credit,0) AS used_credit,update_time FROM T_User_Credits WHERE tel LIKE CONCAT(?,'%') AND IF(?='', 1=1, IFNULL(name,'') LIKE CONCAT(?,'%')) AND status=1 ORDER BY update_time DESC LIMIT ?,?

  

 

mysql存储过程的学习的更多相关文章

  1. mysql 存储过程简单学习

    转载自:http://blog.chinaunix.net/uid-23302288-id-3785111.html ■存储过程Stored Procedure 存储过程就是保存一系列SQL命令的集合 ...

  2. mysql存储过程的学习(mysql提高执行效率之进阶过程)

    1:存储过程: 答:存储过程是sql语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理:存储过程存储在数据库内,可以由应用程序调用执行,而且允许用户声明变量以及进行流程控制,存储类型可以接受 ...

  3. 创建MySQL存储过程示例

    创建MySQL存储过程是学习MySQL数据库必须要掌握的知识,下文对创建MySQL存储过程作了详细的介绍,供您参考学习. AD:2013大数据全球技术峰会课程PPT下载 下文将教您如何创建MySQL存 ...

  4. MySQL存储过程学习笔记

    MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...

  5. MySql存储过程学习总结

    创建存储过程 1.格式   MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,...]]),举个例子: CREATE PROCEDURE proc1 (OUT s ...

  6. MYSQL存储过程和函数学习笔记

    学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...

  7. mysql存储过程学习(一)

    转载 什么是存储过程,存储过程的作用及优点  mysql存储过程详细教程  mysql 使用存储过程批量插数据 一.存储过程介绍: 存储过程(Stored Procedure)是一组为了完成特定功能的 ...

  8. MYSQL进阶学习笔记四:MySQL存储过程之定义条件,处理过程及存储过程的管理!(视频序号:进阶_11,12)

    知识点五:MySQL存储过程之定义条件和处理过程及存储过程的管理(11,12) 定义条件和处理: 条件的定义和处理可以用来定义在处理过程中遇到的问题时相应的处理步骤. DECLARE CONTINUE ...

  9. MYSQL进阶学习笔记二:MySQL存储过程和局部变量!(视频序号:进阶_4-6)

    知识点三:MySQL存储过程和局部变量(4,5,6) 存储过程的创建:     创建存储过程的步骤: 首先选中数据库 改变分隔符,不让分号作为执行结束的标记.(通常情况下,改变分隔符命令 DELIMI ...

随机推荐

  1. IO流的练习1 —— 随机获取文本中的信息

    需求:一个文本中有几个名字,随机从中获取一个名字 分析: A:首先把文本中的数据读出 B:再把数据存储到集合中 C:产生一个随机的索引 D:打印出这个索引对应的值 public static void ...

  2. java 21 - 1 IO流中的字符流概述

    字节流通过读取一个byte数组的方式可以读取中文的,但是有可能出现小问题,所以,读取中文最好是用字符流. 字符流: 字符流=字节流+编码表. 编码表: 由字符及其对应的数值组成的一张表 编码表介绍: ...

  3. android图片缩小和放大Matrix

    /**Bitmap放大的方法*/ private static Bitmap big(Bitmap bitmap) { Matrix matrix = new Matrix(); matrix.pos ...

  4. python大数据工作流程

    本文作者:hhh5460 大数据分析,内存不够用怎么办? 当然,你可以升级你的电脑为超级电脑. 另外,你也可以采用硬盘操作. 本文示范了硬盘操作的一种可能的方式. 本文基于:win10(64) + p ...

  5. sqlalchemy 的 Core 方式使用示例

    知乎: sqlalchemy 的 Core 方式操作数据是一种怎样的体验? 答: 爽! 本文基于:win 10 + python 3.4 + sqlalchemy 1.0.13 基本步骤如下: 1. ...

  6. opencv3中的机器学习算法之:EM算法

    不同于其它的机器学习模型,EM算法是一种非监督的学习算法,它的输入数据事先不需要进行标注.相反,该算法从给定的样本集中,能计算出高斯混和参数的最大似然估计.也能得到每个样本对应的标注值,类似于kmea ...

  7. Spring系列: 使用aop报错:nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$Refle

    写了个最简单的aop例子 配置文件如下 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns ...

  8. 从0开始学java——JUnit4 复习,其实基本思想还是那些,不过采用了新的注释格式的语法

    看了深入探索 JUnit 4(http://www.ibm.com/developerworks/cn/education/java/j-junit4/index.html  ) 主要是讲了新的基于注 ...

  9. [CareerCup] 11.7 Tower of People in Circus 马戏团的人塔

    11.7 A circus is designing a tower routine consisting of people standing atop one another's shoulder ...

  10. 信息安全系统设计基础实验四 20135210&20135218

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础          班级:   1352 姓名:程涵,姬梦馨 学号:20135210,20135218 ...