oracle:游标操作,cursor

在游标中使用参数:

CURSOR cursor_name(p_state IN state%TYPE) IS
    SELECT_statement;

没有参数的写法是

CURSOR cursor_name  IS
    SELECT_statement;

对于括号里面的,IN 左边是参数的别名,IN 右边是参数的类型,对于输入的参数,可以设定默认值

使用参数的语法

OPEN cursor_name (parameter_value);

[or]

FOR record_name IN cursor_name(parameter_value)
LOOP
   NULL;
END LOOP;

FOR UPDATE 和 WHERE CURRENT 

  当希望更新数据库的表时,只能使用游标 FOR UPDATE子句。因为使用SELECT 语句是,不会锁定任何数据行。

使用FOR UPDATE 的目的是锁定希望更新的数据库表中数据行,以便于在执行完更新操作前,其他人不能更新操作。

CURSOR cursor_name IS SELECT_statement 
    FOR UPDATE   [OF column_name];

where current 语句只能在与 for update 语句一起使用。

1 DECLARE
2   CURSOR c_name IS  select_statement  FOR UPDATE OF col_name;
3 BEGIN
4   FOR r_name IN c_name
5     LOOP
6        UPDATE t_name SET col_name = value
7        WHERE CURRENT OF c_name;
8    END LOOP;
9 END;

第7行中的 current of  后跟游标名,通过游标指定的UPDATE OF 可以定位到需要更新的操作,这样就避免 WHERE  的匹配写法(where col_name= r_name.col_name)

原文地址:https://www.cnblogs.com/Azhu/p/2677467.html