在游标中使用参数:
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)