zoukankan      html  css  js  c++  java
  • PLSQL操作

    游标

    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的步骤。下面是一个图示:
     
  • 相关阅读:
    perl自定义简易的面向对象的栈与队列类
    java idea实现.java文件编译成class并运行
    git代码管理及提交
    k8s和docker的区别
    pycharm查看代码结构的方法
    ssh 登录的方式
    excel分析数据绘制统计直方图
    linux普通用户使用yum安装nginx,并使用nginx
    iterm2 + virtualbox + centos环境搭建
    python源码安装
  • 原文地址:https://www.cnblogs.com/wwwfj/p/3971430.html
Copyright © 2011-2022 走看看