游标是用来处理使用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