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)

posted @ 2012-09-09 14:30  A_zhu  阅读(389)  评论(0编辑  收藏  举报