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

标准存储过程写法

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. flex布局滑动页面

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  2. linux64需要增加的依赖库

    sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev gcc-multi ...

  3. web前端性能意义、关注重点、测试方案、优化技巧

    1.前段性能的意义 对于访问一个网站,最花费时间的并不是后端应用程序处理以及数据库等消耗的时间,而是前端花费的时间(包括请求.网络传输.页面加载.渲染等).根据web优化的黄金法则: 80%的最终用户 ...

  4. MVC4 WebAPI

    不管是因为什么原因,结果是在新出的MVC中,增加了WebAPI,用于提供REST风格的WebService,个人比较喜欢REST风格的WebService,感觉比SOAP要轻量级一些,而且对客户端的要 ...

  5. java web 的标准目录结构(zz)

    http://blog.csdn.net/bluesnail216/article/details/7744607 --yourproject    --src       --java   运行的j ...

  6. C#中 += (s, e) => 这些字符什么意思

    public MainWindow(){InitializeComponent();this.Loaded += (s, e) => DiscoverKinectSensor();this.Un ...

  7. 零散知识记录-Jira的安装

    Jira不支持openjdk,在linux下需要卸载后,装个jdk才行.

  8. 从Swift学习iOS开发的路线指引

    本文主要是楼主近段时间从Swift语法开始自学iOS开发的流程总结,PS 一个前提,楼主的生存环境中买不到一本iOS开发中文教程,所以基本都是百度摸索出来的 >_< 主要流程 学习Swif ...

  9. 使用git提交本地代码到github

    1. 客户端选择 git在本地,有多种客户端可供选择,比如eclipse的插件EGit,还有git的官方客户端: Git  Bash, Git CMD, Git GUI等. 推荐使用官方的Git Ba ...

  10. windows网络编程的一些理论

    参考自<VC++深入详解> 这是我在看书时记录下来的东西. 注:下面的Socket其实都应该是socket 第14章网络编程 Socket是连接应用程序与网络驱动程序的桥梁,Socket在 ...