ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一条更新语句的三种写法

一条更新语句的三种写法

原创 Linux操作系统 作者:babylonia 时间:2009-06-17 20:00:43 0 删除 编辑

第一种写法

update t1 set object_name = lower(object_name);

第二种写法

BEGIN
   FOR x IN (SELECT ROWID rid, object_name, ROWNUM r
               FROM t2)
   LOOP
      UPDATE t2
         SET object_name = LOWER (x.object_name)
       WHERE ROWID = x.rid;

      IF (MOD (x.r, 100) = 0)
      THEN
         COMMIT;
      END IF;
   END LOOP;

   COMMIT;
END;

第三种写法

DECLARE
   TYPE ridarray IS TABLE OF ROWID;

   TYPE vcarray IS TABLE OF t2.object_name%TYPE;

   l_rids    ridarray;
   l_names   vcarray;

   CURSOR c
   IS
      SELECT ROWID, object_name
        FROM t2;
BEGIN
   OPEN c;

   LOOP
      FETCH c
      BULK COLLECT INTO l_rids, l_names LIMIT 100;

      FORALL i IN 1 .. l_rids.COUNT
         UPDATE t2
            SET object_name = LOWER (l_names (i))
          WHERE ROWID = l_rids (i);
      COMMIT;
      EXIT WHEN c%NOTFOUND;
   END LOOP;

   CLOSE c;
END;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12712263/viewspace-606614/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-31

  • 博文量
    44
  • 访问量
    41448