游标

SQL> set serveroutput on
SQL> DECLARE
  2    --定义游标,因为该游标中的数据需要更新,所以使用for update
  3    CURSOR cur_test1 IS
  4      SELECT *
  5        FROM test1
  6         FOR UPDATE;
  7    --定义记录类型,使用锚定。这样表test1变化时,不需要修改程序
  8    rec_test1 test1%ROWTYPE;
  9  BEGIN
 10    OPEN cur_test1;
 11    LOOP
 12      FETCH cur_test1 INTO rec_test1;
 13      EXIT WHEN cur_test1%NOTFOUND;
 14      --更新游标指针目前指向的test1的数据,使用current of cur_test1
 15      UPDATE test1
 16         SET a = a + 10
 17       WHERE CURRENT OF cur_test1;
 18    END LOOP;
 19    CLOSE cur_test1;
 20    COMMIT;
 21
 22    --我们使用隐式游标再打开一次,把结果显示出来看看
 23    FOR rec_test1_2 IN ( SELECT * FROM test1 ) LOOP
 24      dbms_output.put_line(rec_test1_2.a);
 25    END LOOP;
 26  END;

2 rowid

pl/sql的主要功能是处理表中的数据,效率的提高主要是在数据的查询上。我们已经知道索引可以提高查询效率。那么,索引的原理是什么呢?
例如,创建表employee(first_name varchar2, last_name varchar2),并在employee.last_name上创建索引ind_e1。我们可以把索引ind_e1看做是另外一张表,它包含2列(last_name, rowid)。
我们发出的sql:update employee set first_name='h' where last_name='g';先从索引ind_e1上查询到该行的rowid,然后再根据rowid直接定位到该行数据所在的数据块和行。
那么很明显,我们直接使用rowid作为查询条件,会比使用索引有更高的执行效率,因为这样会跳过从索引中查询rowid的步骤。下面是一个图示:

PLSQL操作的更多相关文章

  1. PLSQL操作excel

    一.plsql数据库操作: 删除数据前备份一张表: create table plat_counter_def_bf as select * from plat_monitor_counter_def ...

  2. PLSQL操作Oracle创建用户和表

    1.打开PLSQL,填写用户名和密码(初始有两个用户sys和system,密码是自己安装oracle数据库时定的),Database选择ORCL(默认数据库,oracle中创建的用户就像是mysql中 ...

  3. Oracle数据库(一)概述、基础与简单操作

    数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 数据库分类: 关系型数据库 非关系型数据库 数据库 类型 特性 优点 缺点 关系型数据库 SQLite.Oracle. ...

  4. plsql基本操作 复制表 导出表 导出表结构 及其导入

    上一片中介绍了安装instantclient +plsql取代庞大客户端的安装,这里说下plsql的基本操作 plsql操作界面图: 1.复制表 语句:create table IGIS_COPY a ...

  5. Oracle批量恢复drop操作删除的表、索引等对象

    /**********************************************************************查询Drop操作删除的对象select * from re ...

  6. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  7. JSP创建用户验证的实例

    1 显示中文的代码编码解决办法: <%@ page language="java" import="java.util.*" pageEncoding=& ...

  8. Oracle内存全面分析

    Oracle内存全面分析 Oracle的内存配置与oracle性能息息相关.而且关于内存的错误(如4030.4031错误)都是十分令人头疼的问题.可以说,关于内存的配置,是最影响Oracle性能的配置 ...

  9. Oracle数据处理

    DML语言             &:地址符:(PrepareStament)             批处理:插入--------一次将10号部门的员工插入新的表中:           ...

随机推荐

  1. UIMenuController/UIPasteboard(1) 制作一个可以粘贴复制的Label

    效果如下:   苹果只放出来了 UITextView,UITextField,webView三个控件的剪贴板,所以我们要自定义可以复制粘贴的控件,首先需要打开UIResponder的两个方法: - ( ...

  2. 基础之ThreadStatic

    public class Bean { public Bean() { } public static String Current { get { if (guid == null) guid = ...

  3. Oracle每10天删除数据,并重建索引

    declare datDateFrom date := to_date('2010/08/01 00:00:00','yyyy/mm/dd hh24:mi:ss'); datDateTo date; ...

  4. JSON的基本格式以及与JavaScript之间的转换

    JSON的基本格式以及与JavaScript之间的转换 近来,发现很多人写json格式的数据时,总是没有达到JSON的规范,虽然在语言要求不严格的情况下能够通过, 但是,难免会遇到这样那样的问题,到时 ...

  5. java集合框架示例图

  6. [getLongestLength] 加和为0的最长子串长度

    点击这里查看原文 假设一个数组仅仅由1和-1组成,求该数组的和为0的最长子串的长度. 例如: {1,-1,1,-1,1,1,1} 输出:4. 昨天机试的时候做到这道题,不会做,今天思考一下. 普通的解 ...

  7. 4.MySQL连接并选择数据库(SQL & C)

    在连接了MySQL数据库之后,可以通过SQL命令或者C.PHP.JAVA等程序来指定需要操作的数据库.这里主要介绍SQL命令和相应的C程序. 首先创建用户rick(赋予所有权限) mysql> ...

  8. php的运行环境介绍

    php软件已下载在我的百度云:页面底部有地址,如有需要欢迎下载! 一:如何让php环境运行php代码? 直接使用php软件直接运行代码文件中的php代码 在B/S结构中让Apache使用php软件运行 ...

  9. jquery ajax php+mysql 无刷新分页 详细实例

    最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...

  10. 掌握 ActionResult

    我在上一篇博客不要停留在表面,MVC 3 我们要深入一些 说明了我们的掌握程度还是不够,还需要我们继续努力.但是有园友质疑说他们认为我说的只是书院派,并不实用,这令作为程序员的我很是生气.好吧,那咱们 ...