Oracle Where Current Of语句

这篇Oracle教程解释了如何使用Oracle / PLSQL WHERE CURRENT OF语句的语法和示例。

如果想要更新或删除SELECT FOR UPDATE语句引用的记录,则可以使用WHERE CURRENT OF语句。

语法

Oracle / PLSQL中WHERE CURRENT OF语句的语法是:

UPDATE table_name
  SET set_clause
  WHERE CURRENT OF cursor_name;

或者 -

DELETE FROM table_name
WHERE CURRENT OF cursor_name;

注意: WHERE CURRENT OF语句允许您更新或删除上次由光标获取的记录。

示例

使用WHERE CURRENT OF语句更新,以下是使用WHERE CURRENT OF语句更新记录的示例:

CREATE OR REPLACE Function FindCourse
   ( name_in IN varchar2 )
   RETURN number
IS
   cnumber number;

   CURSOR c1
   IS
     SELECT course_number
     FROM courses_tbl
     WHERE course_name = name_in
     FOR UPDATE of instructor;

BEGIN

   OPEN c1;
   FETCH c1 INTO cnumber;

   if c1%notfound then
      cnumber := 9999;

   else
      UPDATE courses_tbl
        SET instructor = 'SMITH'
        WHERE CURRENT OF c1;

      COMMIT;

   end if;

   CLOSE c1;

RETURN cnumber;

END;

使用WHERE CURRENT OF语句删除

以下是使用WHERE CURRENT OF语句删除记录的示例:

CREATE OR REPLACE Function FindCourse
   ( name_in IN varchar2 )
   RETURN number
IS
   cnumber number;

   CURSOR c1
   IS
     SELECT course_number
     from courses_tbl
     where course_name = name_in
     FOR UPDATE of instructor;

BEGIN

   open c1;
   fetch c1 into cnumber;

   if c1%notfound then
      cnumber := 9999;

   else
      DELETE FROM courses_tbl
        WHERE CURRENT OF c1;

      COMMIT;

   end if;

   close c1;

RETURN cnumber;

END;

上一篇: Oracle游标 下一篇: Oracle触发器