- 浏览: 797912 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (151)
- Java-Basic (25)
- Java-NIO (3)
- Java-Mybatis (4)
- Java-Web (15)
- DB-oracle (18)
- DB-mysql (29)
- DB-sqlserver (4)
- DB-postgresql (2)
- DB-SQLite (1)
- DB-H2 (6)
- Tool-Flex (1)
- Tool-Ftp (3)
- Tool-Maven (5)
- Netlink (2)
- Web-CSS (3)
- Web-UI (1)
- Web-JavaScript (8)
- NoSQL (3)
- Mina (2)
- TCPUDP (2)
- SEO (2)
- Network (6)
- DataStructure (1)
- Website-test (1)
- Tool-Excel (1)
- Java-Concurrent (2)
- 前辈指点 (0)
- Eclipse plugins (1)
- DB-NoSQL (1)
最新评论
-
18322696278:
My97DatePicker控件显示时分秒 -
dllhenu:
你好,我让ol加载tiptip,但是tiptip没有在点所在的 ...
OpenLayers下使用Jquery tooltip(Qtip)让要素信息自动显示或隐藏 -
boonya:
你所说的是网页上选择文件路径吧,用ServletFileUpl ...
Apache提供的FTP文件上传下载 -
淡然若水:
我也是用这种方法啊。。。但是FileInputStream i ...
Apache提供的FTP文件上传下载 -
liuweihug:
json序列化反序列化插件-json2.js 介绍和使用 - ...
Json 数据反序列化为Java对象
注:游标只有在打开的时候才能使用,用完必须关闭之。
错误存储过程参数:
IN esCorCode varchar(20),IN intoOrderTableName varchar(30),IN outWareHouseTableName varchar(30),IN startTime varchar(50),IN endTime varchar(50)
错误存储过程:
修改方案:
通过游标查询视图获得游标需要的值。
错误存储过程参数:
IN esCorCode varchar(20),IN intoOrderTableName varchar(30),IN outWareHouseTableName varchar(30),IN startTime varchar(50),IN endTime varchar(50)
错误存储过程:
BEGIN -- CALL P_DELETE_SERVICE_DATA2('10000','WM_INTO_ORDER_10000','WM_OUT_ORDER_10000','2015-12-23 15:00:00','2015-12-23 15:58:00'); DECLARE count INT; -- 游标不支持动态表 [color=red]DECLARE cur_in CURSOR FOR SELECT COUNT(WMIO_ID) FROM intoOrderTableName WHERE WMIO_COMPLETION_TIME BETWEEN startTime AND endTime; DECLARE cur_out CURSOR FOR SELECT COUNT(WMOO_ID) FROM outWareHouseTableName WHERE SURE_DATE BETWEEN startTime AND endTime;[/color] SET @index_=1; -- ---------------------------------------------业务数据表------------------------------------------------------- SET @array_tables=CONCAT('WM_INTO_ORDER'); -- 入库表 SET @array_tables=CONCAT(@array_tables,',','WM_OUT_ORDER'); -- 出库表 SET @array_tables=CONCAT(@array_tables,',','WM_WAREHOUSE_MOVE'); -- 移库表 SET @array_tables=CONCAT(@array_tables,',','WM_BATCH_PICKING'); -- 波次表 SET @array_tables=CONCAT(@array_tables,',','EB_SYS_LOG'); -- 系统日志表 SET @array_tables=CONCAT(@array_tables,',','EB_OPERATE_LOG'); -- 操作日志表 SET @array_tables=CONCAT(@array_tables,',','EB_INTO_STOCK_LOG'); -- 入库日志表 SET @array_tables=CONCAT(@array_tables,',','EB_OUT_STOCK_LOG'); -- 出库日志表 -- ---------------------------------------------业务数据表对应字段------------------------------------------------ SET @array_fields=CONCAT('WMIO_COMPLETION_TIME'); -- 入库表 完成时间标识 SET @array_fields=CONCAT(@array_fields,',','SURE_DATE'); -- 出库表 出库确认时间标识 SET @array_fields=CONCAT(@array_fields,',','WWM_COMPLETION_TIME'); -- 移库表 完成时间标识 SET @array_fields=CONCAT(@array_fields,',','RE_TIME'); -- 波次表 波次释放时间标识 SET @array_fields=CONCAT(@array_fields,',','CREATE_TIME'); -- 系统日志表 创建时间标识 SET @array_fields=CONCAT(@array_fields,',','CREATE_TIME'); -- 操作日志表 创建时间标识 SET @array_fields=CONCAT(@array_fields,',','CREATE_TIME'); -- 入库日志表 创建时间标识 SET @array_fields=CONCAT(@array_fields,',','CREATE_TIME'); -- 出库日志表 创建时间标识 -- ---------------------------------------------计算循环次数------------------------------------------------------ SET @table_count=CHAR_LENGTH(@array_tables)-CHAR_LENGTH(REPLACE(@array_tables,',',''))+1; -- ---------------------------------------------执行业务数据操作-------------------------------------------------- WHILE @index_ <= @table_count DO SET @table_prex=SUBSTRING_INDEX(SUBSTRING_INDEX(@array_tables,',',@index_),',',-1); SET @table_name=CONCAT(@table_prex,'_',esCorCode); SET @fieldName=SUBSTRING_INDEX(SUBSTRING_INDEX(@array_fields,',',@index_),',',-1); SET @delete_data=CONCAT('delete from ',@table_name ,' where ',@fieldName,' between ','"',startTime,'"',' and ','"',endTime,'"'); -- 入库单删除时删除对应的:入库明细、收货信息、退回信息 IF @table_prex = 'WM_INTO_ORDER' THEN OPEN cur_in; FETCH cur_in INTO count; IF count>0 THEN -- 查询符合条件的入库单ID SET @into_order_ids=CONCAT('SELECT WMIO_ID FROM ',@table_name,' where ',@fieldName,' between ','"',startTime,'"',' and ','"',endTime,'"'); SET @into_orderinfo_ids=CONCAT('SELECT WMOF_ID FROM WM_INTO_ORDERINFO_',esCorCode,' where WMOF_IO_ID in ','(',@into_order_ids,')'); -- 删除 入库ID对应的入库明细 SET @WM_INTO_ORDERINFO=CONCAT('WM_INTO_ORDERINFO_',esCorCode); SET @delete_into_orderinfo=CONCAT('delete from ',@WM_INTO_ORDERINFO,' where WMOF_IO_ID in ','(',@into_order_ids,')'); -- 删除 入库ID对应的收货信息 SET @WM_RECEIPT_INFO=CONCAT('WM_RECEIPT_INFO_',esCorCode); SET @delete_receipt_info=CONCAT('delete from ',@WM_RECEIPT_INFO,' where WMRPS_OF_ID in ','(',@into_orderinfo_ids,')'); -- 删除 入库ID对应的退货信息 SET @WM_RETURN_INFO=CONCAT('WM_RETURN_INFO_',esCorCode); SET @delete_return_info=CONCAT('delete from ',@WM_RETURN_INFO,' where WMSP_OF_ID in ','(',@into_orderinfo_ids,')'); -- 删除过程中要注意删除顺序 prepare delete_talbe_data from @delete_receipt_info; execute delete_talbe_data; prepare delete_talbe_data from @delete_return_info; execute delete_talbe_data; prepare delete_talbe_data from @delete_into_orderinfo; execute delete_talbe_data; prepare delete_talbe_data from @delete_data; execute delete_talbe_data; END IF; CLOSE cur_in; -- 删除出库对应的出库详情及出库计划 ELSEIF @table_prex = 'WM_OUT_ORDER' THEN OPEN cur_out; FETCH cur_out INTO count; IF count>0 THEN -- 查询符合条件的出库单ID SET @out_order_ids=CONCAT('SELECT WMOO_ID FROM ',@table_name,' where ',@fieldName,' between ','"',startTime,'"',' and ','"',endTime,'"'); -- 删除 出库ID对应的出库明细 SET @WM_OUT_ORDER_DETAIL=CONCAT('WM_OUT_ORDER_DETAIL_',esCorCode); SET @delete_out_order_detail=CONCAT('delete from ',@WM_OUT_ORDER_DETAIL,' where ' ,' WMOD_OUT_ORDER_ID in ','(',@out_order_ids,')'); SET @delete_data=CONCAT(@delete_out_order_detail,';',@delete_data,';'); prepare delete_talbe_data from @delete_data; execute delete_talbe_data; END IF; CLOSE cur_out; ELSE prepare delete_talbe_data from @delete_data; execute delete_talbe_data; END IF; SET @index_=@index_+1; END WHILE; END
修改方案:
通过游标查询视图获得游标需要的值。
-- ---------------------------------------------创建视图-------------------------------------开始--------------------------- drop view if exists view_into_table; set @view_into_sql=concat("create view view_into_table as select COUNT(WMIO_ID) count from WM_INTO_ORDER_",esCorCode,' WHERE WMIO_COMPLETION_TIME ',' between ','"',startTime,'"',' and ','"',endTime,'"'); PREPARE stmt FROM @view_into_sql; EXECUTE stmt; drop view if exists view_out_table; set @view_out_sql=concat("create view view_out_table as select COUNT(WMOO_ID) count from WM_OUT_ORDER_",esCorCode,' WHERE SURE_DATE ',' between ','"',startTime,'"',' and ','"',endTime,'"'); PREPARE stmt FROM @view_out_sql; EXECUTE stmt; -- ---------------------------------------------创建视图-------------------------------------结束---------------------------
发表评论
-
MYSQL存储过程游标错误:No data - zero rows fetched, selected, or processed
2019-07-04 11:08 4192游标FETCH获取为空时应该及时退出循环: DROP PR ... -
MYSQL循环和退出条件
2019-07-02 13:55 17991.REPEAT 代码如下: REPEAT S ... -
MySQL中判断索引不存在时添加索引
2019-07-02 13:51 3172使用存储过程实现索引添加: DROP PROCEDURE ... -
MYSQL存储过程处理表字段数据更新及索引
2019-07-02 11:58 1274如题实现如下功能: 表字段修改 数据更新 索引创建 D ... -
MySQL锁表问题处理
2017-05-20 16:56 1224MySQL锁概述 相对其他数据库而言,MySQL的锁机制 ... -
MySQL在Linux找不到表名-处理忽略大小写
2016-12-27 13:23 1308Linux找到my.cnf文件 # find / -name ... -
MySQL用户管理及授权-开启远程访问
2016-12-27 10:27 1810Linux开启或停止Mysql服务 #service mys ... -
MySQL查询语句处理结果-枚举字段
2016-10-08 14:43 1871[size=medium] 语法:CASE [COLUMN_] ... -
MySQL DATE_FORMAT() 函数
2016-09-25 11:49 549注:当前年份是2012-11-15 SELECT DATE_ ... -
MySQL多结果集合并union查询
2016-03-30 16:16 1223需求: 查询规则自定义,由数据库保存,返回结果字段来自同一张表 ... -
MySQL允许局域网或外部IP远程访问
2016-03-23 11:17 1214From:http://jiony.iteye.com/blo ... -
Mysql字符串截取函数SUBSTRING的用法
2016-01-12 13:15 6706MySQL的字符串函数截取字符,比用程序截取(如PHP或JAV ... -
MySQL实现统计数据并插入数据的存储过程
2016-01-12 10:39 1376统计存储过程,这里是将统计的结果插入一个表中,后台可以有定时任 ... -
MySQL数据备份和还原
2015-12-30 09:27 1461〇、物理备份与逻辑备份 逻辑备份:将需要备份的数据通过一定的 ... -
MySQL存储过程select中为变量赋值
2015-12-29 13:48 3411注:查询可以使用游标获取单个或一组数据,但有时候返回值就只有一 ... -
MYSQL通过SQL脚本创建存储过程(游标删除多表数据)
2015-12-28 16:34 2228首先描述一下业务处理存储过程功能:删除除系统管理员创建的角色和 ... -
MySQL函数过程示例-根据视图和游标删除数据
2015-12-23 17:38 1434注:游标和视图结合起来使用,因为游标不支持动态表传入。 参数 ... -
MySQL函数过程示例-删除和插入数据
2015-12-23 16:39 756[color=darkred][size=medium] B ... -
MySQL函数
2015-12-22 11:34 675复制代码 控制流函数 IF ... -
MySQL存储过程示例
2015-12-17 09:40 891写mysql存储过程应注意的几点: 1、声明变量(decla ...
相关推荐
MySQL存储过程是数据库管理系统中一组为了完成特定功能的SQL语句集,它可以被保存和重复使用,提高了数据库的效率和可维护性。在本项目实践中,我们将深入学习和运用MySQL的存储过程,同时结合游标这一重要工具进行...
在MySQL中,游标是一种数据库对象,主要用于处理存储过程中的结果集。游标允许我们逐行地读取查询结果,这对于需要对每一行数据执行特定操作的情况非常有用。通过使用游标,我们可以实现更加灵活的数据处理逻辑。 #...
### MySQL中SQL语句游标...通过对MySQL中游标概念及使用方法的详细介绍,可以看出游标为数据库开发者提供了一种灵活而强大的数据处理工具。掌握游标的使用技巧,可以帮助开发者更加高效地处理数据库中的复杂查询结果。
### 游标与存储过程在SQL Server中的...游标提供了灵活的数据检索方式,而存储过程则简化了复杂数据库操作的过程,提高了应用程序的性能和可维护性。在实际开发中,合理运用这些技术可以极大地提升系统的稳定性和效率。
根据提供的文件内容,本篇实验报告主要围绕MySQL数据库中存储过程和函数的应用,涵盖了创建存储过程、函数、游标以及异常处理等高级特性。下面将详细解析报告中的每个知识点。 1. 创建存储过程 存储过程是一种在...
在本示例中,我们将深入探讨如何在MySQL中使用动态游标,特别是结合存储过程来实现这一功能。 首先,创建了一个名为`webuser`的测试表,用于存放用户名数据。接着插入了一些示例数据,包括以'a'和'b'开头的用户。这...
不带标识的临时表方法通过创建一个临时表存储数据,然后逐条取出并处理这些数据,直至所有数据都被处理完毕。这种方法的核心在于使用临时表结合`WHILE`循环结构来模拟游标的行为,从而避免了游标带来的性能问题。 *...
MySQL的存储过程、游标和事务是数据库管理中非常重要的概念,它们在处理大量数据和实现复杂的业务逻辑时起着关键作用。以下是对这些概念的详细解释和实例分析。 **存储过程**: 存储过程是一组预编译的SQL语句,以...
- **事务处理**:在执行复杂操作如多表更新、插入、查询、删除时,存储过程可以与事务处理相结合,保证数据的一致性和完整性。 - **安全性**:可以设置特定用户对存储过程的访问权限,增强数据库的安全性。 2. ...
在这个示例中,我们定义了一个名为 `UpdateBatch` 的存储过程,该过程使用游标逐行读取 `Employees` 表中的数据,并将每一行的名字字段前加上 "Updated_" 字符串。 ##### 2. 调用存储过程 编写好存储过程之后,就...
下面是一个MySQL存储过程中使用游标的示例代码: ```sql DELIMITER $$ CREATE PROCEDURE FetchEmployees() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE emp_id INT; DECLARE emp_name VARCHAR(255); ...
在数据库管理领域,过程和游标是两种非常重要的概念,特别是在使用结构化查询语言(SQL)进行编程时。过程和游标在数据库操作中扮演着关键角色,它们帮助开发者实现更复杂的逻辑和数据处理。 **过程(Procedure)**...
MYSQL 数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程) MYSQL 数据库高级应用宝典含实例中,涵盖了索引、视图、触发器、游标和存储过程等高级应用领域。下面我们将逐一介绍这些高级应用领域的知识点...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一组SQL语句并封装成一个可重复使用的对象。这个经典教程旨在深入探讨存储过程的各个方面,帮助读者掌握这一强大的数据库编程工具。 1. **存储...
这个实例展示了如何在MySQL存储过程中使用游标处理数据,通过逐行读取和更新记录,实现了特定业务逻辑的需求。在实际应用中,这样的存储过程可以提高代码的复用性和效率,同时简化复杂操作的管理。
例如,可以使用存储过程、递归查询或者窗口函数来替代游标。 综上所述,理解并熟练掌握SQL游标是提升数据库操作能力的重要步骤。通过游标,我们可以实现更加灵活和精细的数据处理,但也需要注意在性能和灵活性之间...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许程序员或数据库管理员预编译一系列SQL语句,形成一个可重复执行的单元,以提高数据库操作的效率和便捷性。在这个“MySQL存储过程参考查阅资料”中,你可以...