带参数显式游标
/* =========================================================== | 带参数显式游标 ============================================================ */ DECLARE CURSOR emp_cursor(no NUMBER) IS SELECT ename,sal FROM employee WHERE deptno=no; emp_record emp_cursor%ROWTYPE; v_sal employee.sal %TYPE; BEGIN IF NOT emp_cursor%ISOPEN THEN OPEN emp_cursor(10); END IF; LOOP FETCH emp_cursor INTO emp_record; EXIT WHEN emp_cursor%NOTFOUND; dbms_output.put_line(emp_record.ename||':'||emp_record.sal); END LOOP; CLOSE emp_cursor; END;
使用显式游标更新行
/* =========================================================== | 使用显式游标更新行 ============================================================ */ DECLARE CURSOR emp_cursor IS SELECT ename,sal,e.deptno,dname FROM employee e,dept d WHERE e.deptno=d.deptno FOR UPDATE OF e.job; emp_record emp_cursor%ROWTYPE; BEGIN IF NOT emp_cursor%ISOPEN THEN OPEN emp_cursor; END IF; LOOP FETCH emp_cursor INTO emp_record; EXIT WHEN emp_cursor%NOTFOUND; IF emp_record.deptno=30 THEN UPDATE employee SET sal=sal+100 WHERE CURRENT OF emp_cursor; END IF; dbms_output.put_line(emp_record.sal); END LOOP; CLOSE emp_cursor; END; ROLLBACK;
使用游标类型变量
/* =========================================================== | 使用游标类型变量 ============================================================ */ DECLARE CV SYS_REFCURSOR; -- cursor variable v_lastname employee.ename%TYPE; -- variable for last_name query_2 VARCHAR2(200) := 'SELECT * FROM dept'; v_employee employee%ROWTYPE; -- record variable row of table v_dept dept%ROWTYPE; -- record variable row of table BEGIN OPEN CV FOR SELECT ename FROM employee WHERE job='MANAGER' ORDER BY ename; LOOP FETCH CV INTO v_lastname; EXIT WHEN CV%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_lastname); END LOOP; DBMS_OUTPUT.PUT_LINE('-------------------------------------'); OPEN CV FOR query_2; LOOP FETCH CV INTO v_dept; EXIT WHEN CV%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_dept.dname); END LOOP; CLOSE CV; END;
循环游标
/* =========================================================== | 循环游标 ============================================================ */ DECLARE CURSOR emp_cursor(no NUMBER) IS SELECT ename,sal FROM employee WHERE deptno=no; BEGIN FOR emp_record IN emp_cursor(10) LOOP dbms_output.put_line(emp_record.ename||':'||emp_record.sal); END LOOP; END;
隐式游标
/* =========================================================== | 隐式游标 ============================================================ */ --%NOTFOUND属性举例 DECLARE v_name employee.ename%TYPE; BEGIN SELECT ename INTO v_name FROM employee WHERE empno=45; IF SQL%NOTFOUND THEN dbms_output.put_line('NOTFOUND-不存在该员工'); ELSE dbms_output.put_line('存在该员工'); END IF; EXCEPTION WHEN no_data_found THEN dbms_output.put_line('no_data_found-不存在该员工'); WHEN OTHERS THEN dbms_output.put_line('其他错误'); END;
游标类型变量
/* =========================================================== | 游标类型变量 ============================================================ */ DECLARE CURSOR emp_cursor IS SELECT ename,sal FROM employee WHERE deptno=10; --v_ename employee.ename%TYPE; --v_sal employee.sal%TYPE; v_emp emp_cursor%ROWTYPE; BEGIN IF NOT emp_cursor%ISOPEN THEN OPEN emp_cursor; END IF; LOOP FETCH emp_cursor INTO v_emp; EXIT WHEN emp_cursor%NOTFOUND; dbms_output.put_line(v_emp.ename||':'||v_emp.sal); END LOOP; CLOSE emp_cursor; END;
相关推荐
oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结
Oracle游标的一般使用
oracle游标使用大全,详细描述了如何使用游标,创建游标等等
ORACLE 游标使用示例,给大家可以共享一下。
Oracle游标使用方法及语法大全.doc
详细的oracle游标用法,简单易懂,是学习游标的好材料
oracle 游标FOR循环
Oracle游标使用方法及语法大全
oracle游标 详解 精析 示例 真正能把游标讲透、说全、调理清晰的讲义。 游标犹如C语言的指针:灵活、实用、高效。 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。 游标是一个通过定义...
oracle游标优化以及oracle游标的作用和游标的概念。
oracle游标使用大全,其中有很多例子,有助于大家理解,希望对初学者有帮助
详细介绍了 oracle的游标使用 及 实例
Oracle 游标! 值得下载看看!资源免费,大家分享!!
关于游标使用问题的练习附答案。游标分隐式和显示游标;动态和ref游标。。。
游标是存储过程最基本的要会的,用于访问 ORACLE 数据库的 DDL 和 TCL 语
主要描述oracle中游标的学习隐式游标和显示游标
该资源系本人培训期间的关于ORCL 游标所有实用案例,在此共享希望对大家学习有所帮助
我自己编写的oracle游标案例,希望对大家有点帮助!