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

关于此案例的详细分析,请参看  《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;

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

时间: 2024-10-10 10:40:53

Oracle数据库游标案例讲解与源码 (2)的相关文章

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

1.游标的概念 游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果.每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理.在数据库中,游标是一个十分重要的概念.游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制.游标总是与一条SQL 查询语句相关联因为游标由结果集(可以是零条.一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录

淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划

body, td { font-family: tahoma; font-size: 10pt; } 淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划 SQL编译解析三部曲分为:构建语法树,生成逻辑计划,指定物理执行计划.第一步骤,在我的上一篇博客淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树里做了介绍,这篇博客主要研究第二步,生成逻辑计划. 一. 什么是逻辑计划?我们已经知道,语法树就是一个树状的结构组织,每个节点代表一种类型的语法含义.如

淘宝数据库OceanBase SQL编译器部分 源码阅读--生成物理查询计划

SQL编译解析三部曲分为:构建语法树,制定逻辑计划,生成物理执行计划.前两个步骤请参见我的博客<<淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树>>和<<淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划>>.这篇博客主要研究第三步,生成物理查询计划. 一. 什么是物理查询计划 与之前的阅读方法一致,这篇博客的两个主要问题是what 和how.那么什么是物理查询计划?物理查询计划能够直接执行并返回数据结果数

JSP与oracle数据库交互案例

本案例为咖啡销售情况录入查询系统 一.数据输入系统: 1.  设计输入信息页面 代码如下: <html> <head> </head> <body> <center><H1>咖啡管理系统--录入系统</H1></center> 欢迎来到录入系统<br /> <form action="inputaction.jsp" method="post" name

淘宝数据库OceanBase SQL编译器部分 源码阅读--Schema模式

淘宝数据库OceanBase SQL编译器部分 源码阅读--Schema模式 什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User?我们可以可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的柜子,行和列就是柜子中的格子.User就是房间的主人.简单来说,Schema是包括表,列,索引,视图等数据库对象的集合. OceanBase中的强Sche

Spark2.0从入门到精通:Scala编程、大数据开发、上百个实战案例、内核源码深度剖析视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

史上最详细Oracle 12c搭建过程(内附源码包)

简介 Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好.使用方便.功能强,适用于各类大.中.小.微机环境.它是一种高效率.可靠性好的适应高吞吐量的数据库解决方案. 优点 可用性强可扩展性强数据安全性强稳定性强 操作系统要求 物理内存不少于4Gswap交换分区不少于8G磁盘空间不少于30G挂载分区文件类型为x

Oracle数据库恢复案例

当我们在使用Oracle数据库时,突然断电,造成很多问题,致使旧数据丢失,影响了数据的正确性,破坏了数据库.此时,用户急切需求恢复数据.本文以此为例,讲述数据库数据恢复. 一.案例描述: 数据库因突然断电,数据库启库报system01.dbf需要更多的恢复来保持一致性,数据库无法打开:数据库没有备份,归档日志也不连续.客户提供了数据库的在线文件,急需恢复zxfg用户下的数据.   二.恢复流程:  1 数据库的故障检测 2 尝试挂起数据库并修复数据库 3解析数据文件 4 验证数据 5导出数据与交

远程差异化同步(RSYNC)讲解及源码剖析

近日研究了远程差异化同步(RSYNC)源码,对里面的主要算法流程与业务流程作了一个比较详细的分析,知道这个概念的应该清楚,RSYNC主要是用来进行远程同步和备份的.设计初衷是为了减少带宽的使用,每次同步和备份的时候,只传递差异化的部分,不需要传递整个文件.这样的好处对于只有少部分修改的文件来说是相当有效的,如果我们需要同步和备份一个20M的文件,而其中只有两个字节修改了,那么我们只需要传递这修改的两个字节,其他没有变的不传递,这样大大减少了带宽的占用.我将从一下三个地方来讲解: 一.整体交互(即