码迷,mamicode.com
首页 > 数据库 > 详细

Oracle数据库游标案例讲解与源码 (2)

时间:2015-04-23 17:35:42      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:数据库   oracle   存储过程   procedure   游标   

关于此案例的详细分析,请参看  《Oracle数据库游标案例讲解与源码》一文

http://blog.csdn.net/sinat_26342009/article/details/45199827

案例要求:
  利用游标转换两张表的数据。
  首先,将满足以下三个条件的数据插入到一张新表(productinfo_tmp)中 :
  <1>价格大于1000
  <2>产地为“中国”或“杭州”
  <3> 商品类型为“家电”或“电子产品”
  然后,在新表(productinfo_tmp)中进行如下两个操作:
  <1>价格大于2000的下调5%

  <2>商品类型编号转换为商品类型名称

 由于《Oracle数据库游标案例讲解与源码》一文中的解决方案用到了子查询与游标,将会造成更大的系统开销,造成查询速度变慢,因此可以讲解决方案更改为下面方式:

(建表语句与插入数据,请参照《Oracle数据库游标案例讲解与源码》一文)

create or replace procedure prcd_1
is
begin
  --清空临时表中的原有记录
  delete from productinfo_tmp;
  --把符合要求的数据查询出来,插入新的数据并转换CATEGORY字段
  insert into productinfo_tmp (pid,PNAME,PRICE,QUANTY,CATEGORY,DESPERATION,origin)
  select pid,PNAME,PRICE,QUANTY,CATEGORY,DESPERATION,origin from productinfo,categoryinfo
  where productinfo.category=categoryinfo.CID
  and PRICE>1000 and origin in('中国','杭州') and CNAME in ('电子产品','家电');    
   --产品价格下调
  update productinfo_tmp set productinfo_tmp.PRICE=productinfo_tmp.PRICE*0.95
  where productinfo_tmp.PRICE>2000;
 
  commit;   
end prcd_1;

这样既避免了子查询,又不用使用游标,可以很大的提高存储过程的执行效率!
   

Oracle数据库游标案例讲解与源码 (2)

标签:数据库   oracle   存储过程   procedure   游标   

原文地址:http://blog.csdn.net/sinat_26342009/article/details/45223161

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!