oralce游标案例

oralce游标案例

要求把价格高于1000的产地为杭州和中国的家电和电子产品放到表productinf_tmp,并转换商品类型编号为商品类型,商品价格高于2000下调5%

  • 商品表sql
    CREATE TABLE "SCOTT"."PRODUCTINFO" 
   (    
    "PRODUCTID" VARCHAR2(10), 
    "PRODUCTNAME" VARCHAR2(20), 
    "PRODUCTPRICE" NUMBER(8,2), 
    "QUANTITY" NUMBER(10,0), 
    "CATEGORY" VARCHAR2(10), 
    "DESPERATION" VARCHAR2(1000), 
    "ORIGIN" VARCHAR2(10), 
     PRIMARY KEY ("PRODUCTID")
insert into PRODUCTINFO (productid, productname, productprice,  quantity, category, desperation, origin)
values ('1', '天堂伞', 59, 50, '1', null, '杭州');
insert into PRODUCTINFO (productid, productname, productprice, quantity, category, desperation, origin)
values ('2', '夏普LCD-48G100A', 7000, 20, '3', null, '日本');
insert into PRODUCTINFO (productid, productname, productprice, quantity, category, desperation, origin)
values ('3', '海尔XQB50-918A', 1100, 29, '3', null, '中国');
insert into PRODUCTINFO (productid, productname, productprice, quantity, category, desperation, origin)
values ('4', '三星XQB50-918A', 3600, 12, '3', null, '中国');
insert into PRODUCTINFO (productid, productname, productprice, quantity, category, desperation, origin)
values ('5', '华为XQB50-918A', 2500, 111, '3', null, '中国');
insert into PRODUCTINFO (productid, productname, productprice, quantity, category, desperation, origin)
values ('6', '台电QB50-918A', 400, 129, '4', null, '中国');
insert into PRODUCTINFO (productid, productname, productprice, quantity, category, desperation, origin)
values ('7', '恩克斯-918A', 2800, 22, '2', null, '中国');
commit;
  • 类型表sql
CREATE TABLE "SCOTT"."CATEGORYINFO" 
   (    
     "CATEGORYID" VARCHAR2(10), 
     "CATEGORYNAME" VARCHAR2(30), 
     PRIMARY KEY ("CATEGORYID")
     insert into CATEGORYINFO (categoryid, categoryname)
        values ('1', '雨具');
    insert into CATEGORYINFO (categoryid, categoryname)
        values ('2', '路由器');
    insert into CATEGORYINFO (categoryid, categoryname)
        values ('3', '电视');
    insert into CATEGORYINFO (categoryid, categoryname)
        values ('4', '洗衣机');
    insert into CATEGORYINFO (categoryid, categoryname)
        values ('5', 'MP3');
    insert into CATEGORYINFO (categoryid, categoryname)
        values ('6', '鞋');
    commit;
  • 游标代码
declare
  cur_categoryid categoryinfo.categoryid%type;
  cur_categoryname categoryinfo.categoryname%type;
  cur_prodrcd productinfo%rowtype;
  tmpnum number(8,0);

  cursor cur_prdt_catg is
         select * from productinfo where productprice>1000 and origin in('中国','杭州') and category in 
                (select categoryid from categoryinfo where categoryname in('路由器','电视','洗衣机','MP3'));
  cursor cur_catg is
         select categoryid,categoryname from categoryinfo where categoryname in('路由器','电视','洗衣机','MP3');
  begin
    --把符合要求的数据放进productinfo_tmp
    open cur_prdt_catg;
    loop
         fetch cur_prdt_catg into cur_prodrcd;
         if cur_prdt_catg%found then
            insert into productinfo_tmp(productid,productname,productprice,quantity,category,desperation,origin)
            values(cur_prodrcd.productid,cur_prodrcd.productname,cur_prodrcd.productprice,cur_prodrcd.quantity,cur_prodrcd.category,cur_prodrcd.desperation,cur_prodrcd.origin);
         else
            dbms_output.put_line('已取出所有数据!共'||cur_prdt_catg%rowcount||'条记录');
            exit;
         end if;
    end loop;
    commit;
    --转换产品类型
    open cur_catg;
    tmpnum :=0;
    loop
      fetch cur_catg into cur_categoryid,cur_categoryname;
      if cur_catg%found then
        update productinfo_tmp set productinfo_tmp.category=cur_categoryname where category=cur_categoryid;
        if sql%found then
           tmpnum := tmpnum+sql%rowcount;
        end if;
      else
        Dbms_Output.put_line('产品类型转换完毕!共转换'||tmpnum||'条记录');
        exit;
      end if;
    end loop;
    --产品价格下调
    update productinfo_tmp
    set productprice=productprice*0.95 where productprice>2000;
    dbms_output.put_line('价格下调完毕!共下调'||sql%rowcount||'条商品');
    commit;
    end;
     --查询结果           
    select * from productinfo_tmp 

快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值