mysql存储过程的学习
平时在工作中写过很多存储过程,但有时候对某些存储过程还是有些困惑的,所以发一篇文章记录下。
标准存储过程写法
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存储过程的学习的更多相关文章
- mysql 存储过程简单学习
转载自:http://blog.chinaunix.net/uid-23302288-id-3785111.html ■存储过程Stored Procedure 存储过程就是保存一系列SQL命令的集合 ...
- mysql存储过程的学习(mysql提高执行效率之进阶过程)
1:存储过程: 答:存储过程是sql语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理:存储过程存储在数据库内,可以由应用程序调用执行,而且允许用户声明变量以及进行流程控制,存储类型可以接受 ...
- 创建MySQL存储过程示例
创建MySQL存储过程是学习MySQL数据库必须要掌握的知识,下文对创建MySQL存储过程作了详细的介绍,供您参考学习. AD:2013大数据全球技术峰会课程PPT下载 下文将教您如何创建MySQL存 ...
- MySQL存储过程学习笔记
MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...
- MySql存储过程学习总结
创建存储过程 1.格式 MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,...]]),举个例子: CREATE PROCEDURE proc1 (OUT s ...
- MYSQL存储过程和函数学习笔记
学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...
- mysql存储过程学习(一)
转载 什么是存储过程,存储过程的作用及优点 mysql存储过程详细教程 mysql 使用存储过程批量插数据 一.存储过程介绍: 存储过程(Stored Procedure)是一组为了完成特定功能的 ...
- MYSQL进阶学习笔记四:MySQL存储过程之定义条件,处理过程及存储过程的管理!(视频序号:进阶_11,12)
知识点五:MySQL存储过程之定义条件和处理过程及存储过程的管理(11,12) 定义条件和处理: 条件的定义和处理可以用来定义在处理过程中遇到的问题时相应的处理步骤. DECLARE CONTINUE ...
- MYSQL进阶学习笔记二:MySQL存储过程和局部变量!(视频序号:进阶_4-6)
知识点三:MySQL存储过程和局部变量(4,5,6) 存储过程的创建: 创建存储过程的步骤: 首先选中数据库 改变分隔符,不让分号作为执行结束的标记.(通常情况下,改变分隔符命令 DELIMI ...
随机推荐
- RecyclerView (一) 基础知识
RecyclerView是什么? RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式.它被作为ListView和GridView控件的继承者,在最新的suppor ...
- 对访问修饰关键字public, protected, internal and private的说明
对访问修饰关键字public, protected, internal and private的说明1.msdn: Internal types or members are accessible o ...
- 安装grunt
1,npm install -g grunt-cli 2,npm install grunt --save 作为项目的依赖安装 这两步必不可少
- jenkins忘记管理员登陆密码的补救措施
jenkins可以作为我们日常运维过程中代码上线的发版平台,所以对jenkins的安全可靠的维护是十分重要的. 1)在登陆jenkins的时候,如果忘记普通用户的登陆密码,只要能用管理员账号登陆,还可 ...
- 好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
转载:http://www.cnblogs.com/lyhabc/p/3322437.html 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 这个工具主要就是 ...
- C语言 百炼成钢6
//题目16:输入两个正整数m和n,求其最大公约数和最小公倍数. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include< ...
- 构架高性能WEB网站的几点知识
前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题. HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.h ...
- 数据挖掘系列(5)使用mahout做海量数据关联规则挖掘
上一篇介绍了用开源数据挖掘软件weka做关联规则挖掘,weka方便实用,但不能处理大数据集,因为内存放不下,给它再多的时间也是无用,因此需要进行分布式计算,mahout是一个基于hadoop的分布式数 ...
- 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]
目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...
- 手把手教你Linux服务器集群部署.net网站 - 让MVC网站运行起来
一.Linux下面安装需要软件 我们这里需要安装的软件有: 1) Mono 3.2.8 : C#跨平台编译器,能使.Net运行与Linux下,目前.net 4.0可以完美运行在该平台下 2) ngin ...