mysql 动态游标 , 实际上不要使用, 因为两个人同时执行会删除了其中一个人的数据...
2019独角兽企业重金招聘Python工程师标准>>>
CREATE DEFINER=`root`@`localhost` PROCEDURE `MoveOrderUtil_PartMove`(in company_id_ int ,in owner_id_ varchar(10),in warehouse_ varchar(10),in part_no_ varchar(20),in lot_batch_no_ varchar(20),in fr_location_no_ varchar(20),in to_warehouse_ varchar(10),in to_location_no_ varchar(20),in qty_to_move_ int,in user_id_ varchar(40))
BEGINDECLARE totalSum_ int ;DECLARE qty_onhand_ int ;DECLARE inv_stk_id_ int ;DECLARE move_no_ varchar(20);DECLARE move_id_ int ;if nvl(lot_batch_no_ , '*') = '*' thenbeginDECLARE get_in_stock CURSOR FORSELECT sum(qty_onhand) FROM inventory_part_in_stockWHERE logistics_company_id = company_id_and warehouse = warehouse_and location_no = fr_location_no_and part_no = part_no_ ;DECLARE CONTINUE HANDLER FOR NOT FOUND SET totalSum_ = NULL; OPEN get_in_stock;FETCH get_in_stock INTO totalSum_;CLOSE get_in_stock; end;else beginDECLARE get_in_stock CURSOR FORSELECT sum(qty_onhand) FROM inventory_part_in_stockWHERE logistics_company_id = company_id_and warehouse = warehouse_and location_no = fr_location_no_and part_no = part_no_ and lot_batch_no = lot_batch_no_ ;DECLARE CONTINUE HANDLER FOR NOT FOUND SET totalSum_ = NULL; OPEN get_in_stock;FETCH get_in_stock INTO totalSum_;CLOSE get_in_stock; end;end if;if(nvl(totalSum_ , 0) < qty_to_move_ ) thenCALL ErrorSys_RecordGeneral('MoveOrder', '库位 :P1 库存 : P2 少于需移库数量 : P3 !',fr_location_no_,totalSum_,qty_to_move_);end if;beginDECLARE get_in_stock CURSOR for( SELECT id , qty_onhand from temp_view); DECLARE CONTINUE HANDLER FOR NOT FOUND SET inv_stk_id_ = null; DROP VIEW IF EXISTS temp_view; SET @sqlstr = "CREATE VIEW temp_view as "; if nvl(lot_batch_no_ , '*') = '*' thenSET @sqlstr = CONCAT(@sqlstr , "SELECT id , qty_onhandFROM inventory_part_in_stockWHERE logistics_company_id = ", company_id_ ,"and warehouse = '", warehouse_ ,"'and location_no = '", fr_location_no_ ,"'and part_no = '", part_no_ ,"' ");elseSET @sqlstr = CONCAT(@sqlstr , "SELECT id , qty_onhandFROM inventory_part_in_stockWHERE logistics_company_id = ", company_id_ ,"and warehouse = '", warehouse_ ,"'and location_no = '", fr_location_no_ ,"'and part_no = '", part_no_ ,"' and lot_batch_no = '", lot_batch_no_ ,"' "); end if ;PREPARE stmt FROM @sqlstr; EXECUTE stmt; DEALLOCATE PREPARE stmt; OPEN get_in_stock; moveLoop : loopFETCH get_in_stock INTO inv_stk_id_ , qty_onhand_ ; if inv_stk_id_ is NULL thenleave moveLoop;end if ;if qty_onhand_ >= qty_to_move_ then -- 新增入库单call MoveOrderUtil_NewOrder(move_no_ ,company_id_ , warehouse_ , inv_stk_id_ , qty_to_move_ , to_warehouse_ ,to_location_no_ , owner_id_ , 1 , user_id_); leave moveLoop;else -- 新增入库单call MoveOrderUtil_NewOrder(move_no_ ,company_id_ , warehouse_ , inv_stk_id_ , qty_to_move_ , to_warehouse_ ,to_location_no_ , owner_id_ , 1 , user_id_); set qty_to_move_ = qty_to_move_ - qty_onhand_ ;end if;end loop moveLoop ;close get_in_stock ;set move_id_ = MoveOrderUtil_GetIdByUnindex(company_id_ ,move_no_ );-- 执行移库确认call MoveOrderUtil_ConfirmOrder(move_id_ , user_id_);-- 执行移库完成call MoveOrderUtil_ExecMove(move_id_ , user_id_);end ;END
转载于:https://my.oschina.net/u/3556610/blog/3018801
mysql 动态游标 , 实际上不要使用, 因为两个人同时执行会删除了其中一个人的数据...相关推荐
- mysql 动态游标_mysql动态游标与mysql存储过程游标(示例)
-- 建立测试表和数据 create table webuser (username varchar(10)); insert into webuser values ('a1'),('a2'),(' ...
- mysql 存储过程 预处理语句_用于预处理语句的MySQL存储过程游标
我有一些坏消息和好消息 . 首先是坏消息 . MySQL手册说游标不能用于使用PREPARE和EXECUTE准备和执行的动态语句 . 在游标创建时检查游标的语句,因此该语句不能是动态的 . 所以到目前 ...
- new com.mysql.jdbc.Driver()为什么Driver会创建两次
在学习JDBC的时候,通常有两种方式去注册数据库驱动程序(这里采用MySQL数据库),分别为: Java代码 1. DriverManager.registerDriver(new Driver()) ...
- 关于MySQL数据库游标的笔试题_关于BAT20180825版本面试中常见数据库面试25道试题及对应答案整理汇总...
1.触发器的作用?触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的.它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化.@b@@b@可以联级运算 ...
- 【Oracle】PL/SQL 显式游标、隐式游标、动态游标
在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,Oracle会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...
- Mysql动态数据多条件查询
Mysql动态数据多条件查询 前言 有的时候,我们进行数据的数据查询的时候,我们会加入筛选条件. 例如: select * from user where username = ? // ? 指的是自 ...
- 什么是mysql的游标_数据库中的游标到底是什么意思
数据库中的游标到底是什么意思 关注:177 答案:2 mip版 解决时间 2021-01-15 20:54 提问者更无风月 2021-01-15 15:53 数据库中的游标到底是什么意思 最佳答案 ...
- oracle 动态游标行数,oracle动态游标的简单实现方法
下面就是例子程序 --明细表打印予处理 通用报表: procedure mx_print_common(pd_id in mx_pd_syn.pd_id%type, p_pd_mxb_id IN m ...
- MySQL存储过程+游标+触发器
[0]README 0.1)本文旨在 arrange mysql 存储过程及如何在存储中使用游标 的相关知识: 0.2)delimieter的用法:参见 http://blog.csdn.net/p ...
- mysql 解释 游标赋值_Mysql_游标
MySQL中的游标是一个十分重要的概念.游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制.MySQL中的游标的语法 ...
最新文章
- asp.net中长内容自动分页的实现
- python 因果推断_KDD 2018:微软推出用于因果推断的Python库
- PowershellTFS_Part 1
- Crypto++库在VS 2005中的使用——RSA加解密
- .NET3.0已经Pre-release了
- 树莓派vnc用法 linux,怎样使用VNC在树莓派上运行远程桌面
- 密钥生成并配置_如何在 CentOS 8 上设置 SSH 密钥
- 数据分析学习笔记—matplotlib折线图、条形图、直方图、饼状图基础绘制
- 连续区间(数据岛)查询
- 用c语言库函数进行排序
- 自建自用的微信推送服务
- python 折线图 excel_如何使用python读取excel数据并绘制折线图
- 修心修行“十一字”真言
- h5难做吗_这样的h5制作难吗,通过什么平台可以做出来?
- php如何对mysql加锁_MySQL 加锁处理分析(一)
- CMDN Club每周精选(第1期)
- 两个Ctrl键同时失灵了怎么办
- 我炒股十五年,亏损超过五十万,我该怎么办?
- 仿佛来自虚空,Grothendieck的故事2
- 《张维迎:反思经济学》读后感作文4300字