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. Educational Codeforces Round 64 (Rated for Div. 2)题解

    Educational Codeforces Round 64 (Rated for Div. 2)题解 题目链接 A. Inscribed Figures 水题,但是坑了很多人.需要注意以下就是正方 ...

  2. selenium获取元素信息方法(转载)

    1.获取当前页面的Url函数 方法:current_url 实例: driver.current_url 2.获取元素坐标 方法:location 解释:首先查找到你要获取元素的,然后调用locati ...

  3. 用Queue控制python多线程并发数量

    python多线程如果不进行并发数量控制,在启动线程数量多到一定程度后,会造成线程无法启动的错误. 下面介绍用Queue控制多线程并发数量的方法(python3). # -*- coding: utf ...

  4. How to Close Frozen Applications in macOS

    How to Close Frozen Applications in macOS By Zeeshan Akram  - February 18, 2019 0 436     Oftenly, y ...

  5. MongoDB TTL集合与固定集合

    1.固定集合     MongoDB可以创建固定长度的集合,可以设置最大的集合空间或最大的集合数.创建集合的语法如下:     db.createCollection("collection ...

  6. sqler 集成 terraform v0.12 生成资源部署文件

    terraform v0.12 发布了,有好多新功能的添加,包括语法的增强,新函数的引入,更好的开发提示 只是当前对于一些老版本的provider 暂时还不兼容,但是大部分官方的provider 都是 ...

  7. 移动端tap事件(轻击、轻触)

    一.问题 ①移动端也有click点击事件,click点击会延迟200~300ms ②因为点击的响应过慢,影响了用户体验,所以需要解决响应慢的问题 二.解决方案 ①使用tap事件:即轻击,轻敲,响应速度 ...

  8. 洛谷 P2085 最小函数值

    目录 题目 思路 \(Code\) 题目 戳 思路 首先这些函数全部单带递增,因为\(a\),\(b\),\(c\)都是正整数. 我们将全部的函数的\(x\)为\(1\)时的函数值放入优先度列(小根堆 ...

  9. Android入门教程(三)

    对Android五大布局的描述,分别是 FrameLayout (框架布局),LinearLayout (线性布局),AbsoluteLayout (绝对布局),RelativeLayout (相对布 ...

  10. Mathmatica中的Sum命令

    在Mathematica中,Sum不能直接用于计算列表的和.如图1所示. 图1:利用Sum函数直接计算列表的和出错. 可以采用如下格式的语句:Sum[Part[x0, i], {i, 1, 4}];