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

标准存储过程写法

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. angularjs的ng-repeat指令下的scope作用域

    ng-repeat指令在迭代的时候,每次迭代都会创建一个新的scope,比如下面的代码: <div ng-repeat="list in lists" ng-controll ...

  2. windows客户机连接gerrit的一个报错处理

    gerrit环境部署在linux服务器,windos客户机连接gerrit进行代码操作: 在windows客户机下载Git客户端 在“Git Bash”里使用 ”ssh-keygen -t rsa - ...

  3. mysql及php命名规范

    一.mysql命名规范 1.设计原则 1) 标准化和规范化数据的标准化有助于消除数据库中的数据冗余.标准化有好几种形式,但 Third Normal Form(3NF)通常被认为在性能.扩展性和数据完 ...

  4. 一。常用UIView的属性和方法

    1.frame 控件所在的矩形框的位置和尺寸(以父控件的左上角为坐标原点) 2.bounds 控件 控件所在的矩形框的位置和尺寸(以自己的左上角为坐标原点,所以bounds的x/y一般为0) 3.ce ...

  5. page-cache层以及各种标志位之间的转换

    对真实文件系统层,算是懂了,但是vfs层以及block层还是有点生疏呢,最近要好好分析一下了. page-cache层主要关注文件读写时的行为,包括页的状态之间的变化,何时变脏,何时变成writeba ...

  6. 解决 Windows Update 时提示当前无法检查更新,因为未运行服务

    故障:打开“Windows Update”出现红色盾牌图标 点击“检查更新”,出现“Windows Update 当前无法检查更新,因为未运行服务.您可能需要重新启动计算机” 查看“Windows U ...

  7. [CareerCup] 1.8 String Rotation 字符串的旋转

    1.8 Assume you have a method isSubstring which checks if one word is a substring of another. Given t ...

  8. PowerCMD——cmd的命令行工具

    之前就想整理一下程序员经常使用的一些工具,最近有时间正好整理一下. 有句话叫做:“工欲善其事必先利其器”,而我就算是搜集工具组装成一个系列——善事利器,来记录一下工作学习中常用的一些工具. 总结起来, ...

  9. 细说C#多线程那些事-线程基础

    我第一次接触“线程”的概念时,觉得它深奥难懂,看了好多本书,花了很长时间才领悟到它的真谛.现在我就以一个初学者的心态,把我所理解的“多线程”描述给大家.这一次是系列文章,比较完整的展示与线程相关的基本 ...

  10. Mac无法找到摄像头问题解决

    facetime显示“未检测到摄像头”之类的,重启后可能摄像头有工作正常了,摄像头不稳定 重置 NVRAM后恢复正常,据说机器卡的时候,此法也可以使用. https://support.apple.c ...