显式游标
实例1
/*简单cursor游标
*students表里面有name字段,你可以换做其他表测试
*/
--定义
DECLARE
--定义游标并且赋值(is 不能和cursor分开使用)
CURSOR STUS_CUR IS
SELECT * FROM hr.employees;
--定义rowtype
STUDENTS STUS_CUR%ROWTYPE;
/*开始执行*/
BEGIN
--开启游标
OPEN STUS_CUR;
--loop循环
LOOP
--循环条件
EXIT WHEN STUS_CUR%NOTFOUND;
--游标值赋值到rowtype
FETCH STUS_CUR
INTO STUDENTS;
--输出
DBMS_OUTPUT.PUT_LINE(STUDENTS.LAST_NAME);
--结束循环
END LOOP;
--关闭游标
CLOSE STUS_CUR;
/*结束执行*/
END;
实例2
DECLARE
CURSOR LR_NUM IS --定义一个游标,名为:lr_num
SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 5; --这段查询即为游标lr_num的具体内容
V_NUM LR_NUM%ROWTYPE; --定义一个变量v_num,数据类型为游标 lr_num 的 %ROWTYPE,即lr_num的一行
BEGIN
OPEN LR_NUM; --打开游标lr_num
LOOP
--开始循环
FETCH LR_NUM
INTO V_NUM; --把游标 lr_num 中的next一行数据 into 到变量 v_num 中
EXIT WHEN LR_NUM%NOTFOUND; --如果 lr_num 中找不到next一行数据,即退出循环
DBMS_OUTPUT.PUT_LINE(V_NUM.LV); --输出 v_num 变量中的 lv 字段的值
END LOOP; --结束循环
CLOSE LR_NUM; --关闭游标
END;
/