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

标准存储过程写法

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. android:ToolBar详解(手把手教程)

    今年(2014) 的 google i/o 发表令多数人为之一亮的 material design,而 google 也从「google i/o 2014」 开始,大家也陆陆续续地看到其更新的 and ...

  2. 委托--delegate

    委托,跟类很相似,能够定义对象,但是区别是 1,委托必须有关键字delegate. 2,委托有类型修饰符,比如void,string,int.修饰符取决于他的方法返回类型. 3,委托没有方法实现. d ...

  3. js对象深潜拷贝(从requirejs中抠出来的)

    var op = Object.prototype, ostring = op.toString, hasOwn = op.hasOwnProperty; function isFunction(it ...

  4. 如何设置word里的代码格式,使之有底纹的效果

    1.测试平台:word2013 2.步骤:设计->底纹->填充->应用于->确定 3.效果:

  5. Math类和Random类(数学公式相关类)

    Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. 常用方法: 1.static 数值类型 abs(数值类型 a)      返回 double 值的绝对值. 2.sta ...

  6. 在matlab中进行遥感影像地理坐标的相互转换

    在matlab中进行图像处理,一般使用的都是图像本地坐标,以左上角(1,1)开始.处理完成后,如果要将结果在带地理坐标的遥感影像中显示,或者需要输出成shp文件,就需要涉及到本地坐标和地理坐标的转换, ...

  7. Python类库下载

    https://sourceforge.net/projects/pywin32/files/pywin32/ WMI库的安装 下载 http://timgolden.me.uk/python/wmi ...

  8. 实验一报告 20135238&20135207

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础              班级:1352 姓名:(按贡献大小排名)龚睿  王国伊 学号:(按贡献大小排 ...

  9. 信息安全系统设计基础exp_5

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础 班级:1353 姓名:郑伟.吴子怡 学号:20135322.20135313 指导教师: 娄嘉鹏 实验 ...

  10. 最长回文子串(Manacher算法)

    回文字符串,想必大家不会不熟悉吧? 回文串会求的吧?暴力一遍O(n^2)很简单,但当字符长度很长时便会TLE,简单,hash+二分搞定,其复杂度约为O(nlogn), 而Manacher算法能够在线性 ...