Looping through a Cursor by Using the LOOP Command
SQL> SQL> drop table emp; Table dropped.-- from w ww .j a v a 2 s.co m Elapsed: 00:00:00.02 SQL> create table emp( 2 empno number(4,0), 3 ename varchar2(10), 4 job varchar2(9), 5 mgr number(4,0), 6 hiredate date, 7 sal number(7,2), 8 comm number(7,2), 9 deptno number(2,0) 10 ); Table created. SQL> SQL> insert into emp values(7839, 'KING', 'PRESIDENT', null, to_date('17-11-1981','dd-mm-yyyy'), 5000, null, 10); SQL> insert into emp values(7698, 'BLAKE', 'MANAGER', 7839,to_date('1-5-1981','dd-mm-yyyy'), 2850, null, 30); SQL> insert into emp values(7782, 'CLARK', 'MANAGER', 7839,to_date('9-6-1981','dd-mm-yyyy'), 2450, null, 10); SQL> insert into emp values(7566, 'JONES', 'MANAGER', 7839,to_date('2-4-1981','dd-mm-yyyy'), 2975, null, 20); SQL> SQL> SQL> declare 2 cursor c_emp (ci_deptNo NUMBER) is 3 select * 4 from emp 5 where deptNo = ci_deptNo; 6 r_emp c_emp%ROWTYPE; 7 begin 8 open c_emp(10); 9 loop 10 fetch c_emp into r_emp; 11 exit when c_emp%NOTFOUND; 12 update emp 13 set sal=sal*1.5 14 where empNo=r_emp.empNo; 15 DBMS_OUTPUT.put_line('Emp '||r_emp.eName|| 16 ' - salary change:'||r_emp.sal|| 17 '->'||r_emp.sal*1.5); 18 end loop; 19 close c_emp; 20 end; 21 / Emp KING - salary change:5000->7500 Emp CLARK - salary change:2450->3675 PL/SQL procedure successfully completed. Elapsed: 00:00:00.02