游标是用来处理使用SELECT语句从数据库中检索到的多行记录的工具。借助游标的功能,数据库应用程序可以对一组记录逐个进行处理,每次处理一行。

游标是从数据表中提取出来的数据,以临时表的形式存放在内存中

--普通游标,游标本身就是一个变量

 

一个游标(cursor)可以被看作指向结果集(a set of rows)中一行的指针(pointer)。

(3).使用FOR循环处理游标
create or replace PROCEDURE PROC_STU3 AS
BEGIN
--显示游标使用,使用for循环
declare
--定义游标,名称为cur_stu
cursor cur_stu is
select stuno,stuname from student order by stuno;
begin
for stu in cur_stu
loop
dbms_output.PUT_LINE(stu.stuno||'->'||stu.stuname);
--循环做隐含检查 %notfound
end loop;
--自动关闭游标
end;
END PROC_STU3;

 

SQL> DECLARE
  2    emp_id employees_test.employee_id%type;
  3    CURSOR cur IS
  4      SELECT b.employee_id, b.ROWID ROW_ID
  5        FROM employees_test b
  6       ORDER BY b.ROWID; ---如果表的数据量不是很大,可以不用 order by rowid
  7  BEGIN
  8    FOR row IN cur LOOP
  9      DBMS_OUTPUT.PUT_LINE('last name: '||row.employee_id||'--'||row.ROW_ID);
 10    END LOOP;
 11  END;
 12  /

last name: 198--AAASStAAEAAAbazAAA
last name: 199--AAASStAAEAAAbazAAB
last name: 200--AAASStAAEAAAbazAAC
last name: 201--AAASStAAEAAAbazAAD
last name: 202--AAASStAAEAAAbazAAE
last name: 203--AAASStAAEAAAbazAAF
last name: 204--AAASStAAEAAAbazAAG
last name: 205--AAASStAAEAAAbazAAH
last name: 206--AAASStAAEAAAbazAAI