create procedure PRO_update_Goods_group_stock is
v_min_stock NUMBER(10, 2);
v_gg_stock NUMBER(10, 2);
v_goods_no number;
v_sum_cost NUMBER(10, 2);
begin
for g_goods_no in (select ggi.goods_no
from goods_group_item ggi
where ggi.is_delete = 'N'
GROUP by ggi.goods_no) loop
select count(*)
into v_goods_no
from goods_no_stock gn
where gn.goods_no = g_goods_no.goods_no;
if v_goods_no > 0 then
continue;
end if; --查询组合子商品的库存再除以绑定的数量 取最小值 gg主商品 g子商品
select min(TRUNC(g.available_stock /
decode(gg1.group_goods_amount,
0,
1,
gg1.group_goods_amount),
0))
into v_min_stock
from goods_group_item gg1, goods g, goods gg
where gg1.goods_no = g_goods_no.goods_no
and gg1.is_delete = 'N'
and gg.goods_id = gg1.goods_id
and gg.is_delete = 'N'
and g.goods_id = gg1.GROUP_GOODS_ID; --计算成本价格 gg主商品 g子商品
select trunc(sum(g.cost_price * gg1.group_goods_amount), 2)
into v_sum_cost
from goods_group_item gg1, goods g, goods gg
where gg1.goods_no = g_goods_no.goods_no
and gg1.is_delete = 'N'
and gg.goods_id = gg1.goods_id
and gg.is_delete = 'N'
and g.goods_id = gg1.GROUP_GOODS_ID; update goods
set available_stock = v_min_stock, COST_PRICE = v_sum_cost
where goods_no = g_goods_no.goods_no
and is_delete = 'N';
commit;
end loop; --下架问题组合码
insert into sys_user_message
(MESSAGE_ID,
PRODUCT_CODE,
TARGET_MODUL_ID,
MESSAGE_BODY,
MESSAGE_STAGE,
IS_DELETE)
select sys_user_message_seq.nextval,
p.product_code,
254,
'商品:'||p.product_code||' 没有维护组合码',
'',
'N'
from product p
where not exists (select 1
from goods_group_item ggi
where ggi.goods_no = p.product_code)
and p.is_delete = 'N'
and p.is_onsale = 'Y'
and p.product_code like 'A%'; update product p set p.is_onsale = 'N'
where not exists (select 1
from goods_group_item ggi
where ggi.goods_no = p.product_code)
and p.is_delete = 'N'
and p.is_onsale = 'Y'
and p.product_code like 'A%'; commit;
end; select * from goods_no_stock gn
where gn.goods_no in (select ggi.goods_no
from goods_group_item ggi
where ggi.is_delete = 'N'
GROUP by ggi.goods_no); select * from goods g where g.GOODS_NO='02-00056'; select * from goods g where g.GOODS_NO=''; select * from goods g where g.goods_no=''; select gn.goods_no from goods_no_stock gn;
goods_no_stock:库存同步黑名单表,在这张表中的数据,都不会进行相关的更新操作
 

oracle 存储函数,更新库存的更多相关文章

  1. Oracle存储函数,存储过程

    一.Oracle存储函数:存储的PL/SQL语法块,完成特定的功能.1.语法: 函数关键字: function (1)创建函数 CREATE [OR REPLACE] FUNCTION <fun ...

  2. ORACLE 存储函数

    前奏: 必要的概念: ORACLE 提供能够把 PL/SQL 程序存储在数据库中.并能够在不论什么地方来运行它.这样就叫存储过 程或函数. 过程和函数统称为 PL/SQL 子程序.他们是被命名的 PL ...

  3. Oracle存储函数jdbc调用

    package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...

  4. oracle存储函数实例

    CREATE OR REPLACE PROCEDURE "PROC_INS_DAY_DOCTOR_LL"(v_date in VARCHAR) is --PROC_INS_DAY_ ...

  5. Oracle的基本语法,存储函数及触发器

    1.PL/SQL    PL/SQL是Oracle对 ql语言的过程化扩展,指在 SQL 命令语言中增加了过程处理语句,使SQL语言具有过程处理能力.把 SQL 语言的数据操纵能  力与过程语言的数据 ...

  6. Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么 ...

  7. oracle存储过程和存储函数&触发器

    oracle存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程,存储函数 存储过程和存储函数的相同点:完成特定功能的程序 存储过程和存储函数的区别:是否用return语句返回值 ...

  8. oracle之存储过程和存储函数的使用和区别

    #存储过程:封装在服务器上一段sql片段,已经编译好了的代码. 1.客户端调存储过程,执行效率就会非常高效. 语法: create [or replace] procedure 存储过程名称 (参数名 ...

  9. Oracle数据库游标,序列,存储过程,存储函数,触发器

    游标的概念:     游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理, ...

随机推荐

  1. 19.centos7基础学习与积累-005-命令总结01

    从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 1.查看命令帮助的方法: --help 适用于一般命令,非内置命令 man  适用于 ...

  2. [转载]Mysql数据库千万级数据处理优化

    转载:http://blog.sina.com.cn/s/blog_6dcd17320100tm6o.html 1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by ...

  3. MongoDB 分片问题汇总

    分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用. 1.分片简介 分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机 ...

  4. centos7最小安装后无法联网解决方法

    1 进入目录 cd /etc/sysconfig/network-scripts/ # 编辑网卡的配置文件 # 多网卡会对应多个配置文件,均以ifcfg-enp开头 # 新环境配置可任意选择,建议按一 ...

  5. 记录第n次网站渗透经历

    如标题所示,第x次实战获取webshell的经历是非常美好且需要记录的(毕竟开始写博客了嘛).这能够证明这一路来的学习没有白费,也应用上了该用的知识. 首先怎么说呢,某天去补天看了看漏洞,发现有一个网 ...

  6. failed to recover intents

    failed to recover intents 无法恢复意图

  7. 移动平台前端开发总结(ios,Android)

    首先我们来看看webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用 <meta content="width=device-width; ...

  8. socket mac终端调试工具 nc netcat

    今天想学点socket ,因此搜索socket 工具,找到了netCat工具.可以打开两个终端window ,实现终端之间的socket的收发信息,为以后学习socket调试做准备用吧.两个终端分别打 ...

  9. jq function return value

    所有 JS  函数 都会返回值 假如 没有 return  则返回 undefined

  10. Zookeeper基础入门介绍

    什么Zookeeper Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization).命 ...