游标主要分为隐式游标和显式游标两种。
显式游标的定义
DECLARE
v_Emp Emp%ROWTYPE;
--定义显式游标
CURSOR Emp_Cur IS
SELECT *
FROM Emp;
BEGIN
--打开游标
IF NOT Emp_Cur%ISOPEN THEN
OPEN Emp_Cur;
END IF;
--循环读取游标数据
FETCH Emp_Cur
INTO v_Emp;
LOOP
EXIT WHEN Emp_Cur%NOTFOUND;
Dbms_Output.Put_Line('员工编号:' || v_Emp.Empno || ' 员工姓名:' ||
v_Emp.Ename);
FETCH Emp_Cur
INTO v_Emp;
END LOOP;
--关闭游标
CLOSE Emp_Cur;
END;
for循环遍历游标,for循环会自动打开和关闭游标。
DECLARE
v_Emp Emp%ROWTYPE;
--定义显式游标
CURSOR Emp_Cur IS
SELECT *
FROM Emp;
BEGIN
FOR c IN Emp_Cur LOOP
Dbms_Output.Put_Line('员工编号:' || c.Empno || ' 员工姓名:' || c.Ename);
END LOOP;
END;
——————————-output——————————–
员工编号:7789 员工姓名:SCOTT
员工编号:7369 员工姓名:SMITH
员工编号:7499 员工姓名:ALLEN
员工编号:7521 员工姓名:WARD
员工编号:7566 员工姓名:JONES
员工编号:7654 员工姓名:MARTIN
员工编号:7698 员工姓名:BLAKE
员工编号:7782 员工姓名:CLARK
员工编号:7788 员工姓名:SCOTT
员工编号:7844 员工姓名:TURNER
员工编号:7876 员工姓名:ADAMS
员工编号:7900 员工姓名:JAMES
员工编号:7902 员工姓名:FORD
员工编号:7934 员工姓名:MILLER