本文测试在pl/sql编程中,更新游标数据的2种方式以及并发条件下各种方式的实际表现。2种方式的效率问题不在此文讨论之列!
一、环境准备
数据库:Oracle10.2.0.4
测试工具:PL/SQL Developer9
二、数据准备
我们使用oracle自带的演示用户scott登录数据库,为清楚看到数据变化,执行以下语句:
SQL> update emp t set t.sal=1000;
14 rows updated
SQL> commit;
Commit complete
Emp表的sal字段初始化为1000
查询emp表:
SELECTt.empno, t.ename,t.job, t.sal,ROWIDrdfromemp t;
结果如图1所示:
图1
Sal字段已经全部更新为1000
三、创建存储过程ps_cursor_for_update
CREATEORREPLACEPROCEDUREps_cursor_for_update
(p_salPLS_INTEGER)IS
CURSORcIS
SELECTt.empno, t.ename,
t.hiredate,ROWIDrd
FROMEMP t
WHEREt.sal =1000
FORUPDATE;
v_emp_record c%ROWTYPE;
v_rowsPLS_INTEGER:=0;
BEGIN
OPENc;
LOOP
FETCHc