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的步骤。下面是一个图示:
     
  • 相关阅读:
    utf8编码引起js输出中文乱码的解决办法 dodo
    VS2005+SQL2005 ASP.NET2.0数据库连接(转) dodo
    VS.net中aspnet_wp.exe”失败。错误代码为 0x8013134b dodo
    SQL总结 dodo
    HttpModule工作原理 dodo
    反向输出字符串 dodo
    如何访问HeaderTemplate中的控件 dodo
    XMLHTTP说明 dodo
    location.reload() 和 location.replace()的区别和应用 dodo
    GridView中模版列使用RowCommand事件如何得到当前列的行索引? dodo
  • 原文地址:https://www.cnblogs.com/wwwfj/p/3971430.html
Copyright © 2011-2022 走看看