mysql 中字符串拼接,查询sql语句总结
DELIMITER $$
USE `ld_wpfmgl_sys`$$
DROP PROCEDURE IF EXISTS `code_query`$$
CREATE DEFINER=`root`@`%` PROCEDURE `code_query`(IN `$opfrom` INT, IN `$username` VARCHAR(50), IN `$password` VARCHAR(50), IN `$pagesize` INT, IN `$pageindex` INT, IN `$enterpriseID` INT, IN `$productSeriesID` INT, IN `$productID` INT, IN `$productStandard` VARCHAR(50), IN `$taskID` INT, IN `$code` VARCHAR(50))
COMMENT '3.35 编码查询 web'
BEGIN
/*********************参数定义区域(begin)*************************/
/*定义接收外部参数变量*/
DECLARE $_opfrom INT; # 命令请求来源
DECLARE $_username VARCHAR(50); # 用户名
DECLARE $_password VARCHAR(50); # 密码
DECLARE $_pagesize INT DEFAULT 0; # 页码数
DECLARE $_pageindex INT DEFAULT 0; # 当前页数
DECLARE $_enterpriseID INT DEFAULT 0; # 企业ID
DECLARE $_productSeriesID INT DEFAULT 0; # 产品系列ID
DECLARE $_productID INT DEFAULT 0; # 产品ID
DECLARE $_productStandard VARCHAR(50) ; # 产品规格
DECLARE $_taskID INT ; # 任务名称
DECLARE $_code VARCHAR(50) ; # 码值
/*内部使用变量*/
DECLARE $totalPages INT DEFAULT 0; # 返回用户总数
DECLARE $sqltext VARCHAR(2000); # 拼接sql串
DECLARE $f_code_id INT DEFAULT 0 ; # 父码ID
DECLARE $biaoshi INT DEFAULT 0; # 标识记号
DECLARE $t_id INT DEFAULT 0; # 任务id
/*错误代码及描述
*/
DECLARE $_error INT DEFAULT 0;
#declare continue handler for sqlexception set $_error=1;
/*接收外部参数*/
SET $_opfrom =IFNULL($opfrom,0);
SET $_username=IFNULL($username,'');
SET $_password=IFNULL($PASSWORD,'');
SET $_pagesize=IFNULL($pagesize,0);
SET $_pageindex=IFNULL($pageindex,0);
SET $_enterpriseID = IFNULL($enterpriseID ,0);
SET $_productSeriesID = IFNULL($productSeriesID,0);
SET $_productID = IFNULL($productID ,0);
SET $_productStandard = IFNULL($productStandard,'');
SET $_taskID = IFNULL($taskID ,0);
SET $_code = IFNULL($CODE ,'');
/*********************参数定义区域(end)***************************/
/*********************业务逻辑处理区域(begin)*********************/
#事务开始
SET $sqltext = 'select s.id as taskNO,bu.c_name as enterpriseName,ps.serie_name as proSeries,p.product_name as proName, p.product_spec as proStandard,pr.name as packRatio_name,pr.ratio as packRatio, s.batchNO as batchNO,s.subBatchNO as subBatchNO,s.workshop as workshop,s.proline as proline,s.team as team,s.proBeginDate,s.proEndDate,s.product_date as produceDate,s.expired_date as exprieDate, s.code_count as codeCount,(SELECT COUNT(1) FROM ld_bus_code_produced cp where cp.task_id = s.id ) as codeUsed,s.createBy as opName, s.state as status';
SET $sqltext = CONCAT($sqltext,' from ld_bus_task s join ld_bus_business bu on s.business_id=bu.id
join ld_bus_product_series ps on s.product_series_id=ps.id
join ld_bus_product p on s.product_id=p.id
join ld_bus_pack_ratio pr on s.ratio_id=pr.id where s.isvalid=1 ');
#1判断任务ID是否为空
IF($_taskID !=0)THEN
SET $sqltext=CONCAT($sqltext,' and s.id =',$_taskID);
#2判断码值是否为空
ELSEIF($_code!='')THEN
#获取码值所属任务
SELECT task_id FROM ld_bus_code_produced WHERE CODE =$_code
INTO $t_id;
SET $sqltext=CONCAT($sqltext,' and s.id =',$t_id);
#set $sqltext=concat($sqltext,' and cp.code= \'',$_code,'\'');
#3判断产品规格是否为空
ELSEIF($_productStandard!='')THEN
SET $sqltext=CONCAT($sqltext,' and p.product_spec= \'',$_productStandard,'\'');
ELSE
SET $biaoshi = 1;
END IF;#1
#任务号,编码,产品规格都为空时才判断企业信息
IF($biaoshi=1)THEN
#判断企业是否为空
IF($_enterpriseID !=0)THEN
SET $sqltext=CONCAT($sqltext,' and s.business_id = ',$_enterpriseID);
END IF;
#判断产品系列是否为空
IF($_productSeriesID!=0)THEN
SET $sqltext=CONCAT($sqltext,' and s.product_series_id= ',$_productSeriesID);
END IF;
#判断产品是否为空
IF($_productID!=0)THEN
SET $sqltext=CONCAT($sqltext,' and s.product_id= ',$_productID);
END IF;
END IF;
#set $sqltext = concat($sqltext,' where cp.isValid = 1 group by cp.task_id ');
# 输出拼接sql语句返回的总数
SET @querycount = CONCAT('select count(1) as totalPages from (',$sqltext,')a');
PREPARE querycount FROM @querycount;
EXECUTE querycount;
# 拼接分页语句
SET $sqltext = CONCAT($sqltext,' order by s.createDate desc limit ',$_pageindex,',',$_pagesize);
#输出拼接的sql语句
SET @querysql = $sqltext;
PREPARE stmt FROM @querysql;
EXECUTE stmt;
/*********************业务逻辑处理区域(end)***********************/
/*********************事务报错处理区域(begin)*********************/
#2 报错处理
IF($_error=1) THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
/*********************事务报错处理区域(end)***********************/
/*********************操作日志记录区域(begin)*********************/
INSERT INTO ld_sys_use_log(username,optname,optfrom,optdesc,errorCode)
VALUES($_username,'code_query',$_opfrom,'3.35 编码查询 web',$_error);
/*********************操作日志记录区域(end)***********************/
/*********************返回区域(begin)*****************************/
SELECT $_error AS errorCode;
/*********************返回区域(end)*******************************/
END$$
DELIMITER ;
mysql 中字符串拼接,查询sql语句总结的更多相关文章
- 在MySQL中使用explain查询SQL的执行计划
1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MyS ...
- 如何在MySQL中使用explain查询SQL的执行计划?
1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MyS ...
- 关于mysql中实现replace的sql语句
update 表名 set 字段名=replace(字段名, '旧字符串', '新字符串')
- MySQL概述 - 一条查询sql语句的执行过程
Server层 连接器 建立连接.获取权限.维持和管理连接. 连接建立比较复杂,建议使用长连接 定期断开长连接 mysql_reset_connection指令 查询缓存 建议关闭,任何更新操作会此t ...
- sql判断以逗号分隔的字符串中是否包含某个字符串--------MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法
sql判断以逗号分隔的字符串中是否包含某个字符串---------------https://blog.csdn.net/wttykj/article/details/78520933 MYSQL中利 ...
- MySQL的EXPLAIN命令用于SQL语句的查询执行计划
MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息 ...
- 存储过程往拼接的sql语句中传递日期值
存储过程往拼接的sql语句中传递日期值 declare @start datetime declare @end datetime set @start='2014-3-1' set @end='20 ...
- 列表查询组件代码, 简化拼接条件SQL语句的麻烦
列表查询组件代码, 简化拼接条件SQL语句的麻烦 多条件查询
- Mysql中字符串正确的连接方法
虽然SQL server和My sql的语句基本都一致,但是仍然存在一些小区别.就如字符串的连接来说,SQL server中的字符串连接是使用“+”来连接,不带引号sql server是做加法运算.而 ...
随机推荐
- 力扣—gray code (格雷编码) python实现
题目描述: 中文: 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异. 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列.格雷编码序列必须以 0 开头. 英文: Th ...
- Struts 2中的constant详解【转载】
通过对这些属性的配置,可以改变Struts 2 框架的一些默认行为,这些配置可以在struts.xml文件中完成,也可以在struts.properties文件中完成. struts.xml 1.&l ...
- window.onload中失效的问题
在页面中,我们有时候想让页面加载的时候有多个JS事件,一般的时候我们会这样做 window.onload=function(){ alert("aaa"); } window.on ...
- JSON和fastjson
一.JSON 语法规则: 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 名称/值对-->对象-->数组 JSON 名称/值对 JSON 数据的书写格式是:名称/值对. ...
- 【和孩子一起学编程】 python笔记--第三天
第十章 游戏时间:Skier 首先安装pygame,直接在cmd命令控制框里键入pip install pygame就可以了 代码: import pygame, sys, random skier_ ...
- MariaDB 删除表
在本章中,我们将学习删除表. 表删除很容易,但记住所有删除的表是不可恢复的. 表删除的一般语法如下 - DROP TABLE table_name ; 存在执行表删除的两个选项:使用命令提示符或PHP ...
- sql-主键、外键、索引
SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...
- js事件---同一个事件实现全选与反选功能
背景: 点击头部按钮,实现全选与反选功能 1.绑定事件,把当前勾选状态传递给方法 $event <el-checkbox v-model="ModelCheckAll" cl ...
- ThinkPHP示例:图片上传
ThinkPHP示例之图片上传,包括图片上传.数据库保存.缩略图生成以及图片水印功能演示.首先需要下载框架核心,然后把示例解压到Web根目录下面,并修改入口文件中的框架入口文件的位置.导入示例目录下面 ...
- HTML5: HTML5 Web 存储
ylbtech-HTML5: HTML5 Web 存储 1.返回顶部 1. HTML5 Web 存储 HTML5 web 存储,一个比cookie更好的本地存储方式. 什么是 HTML5 Web 存储 ...