第六章上机课游标管理.pdf
文本预览下载声明
老二牛车教育
《Oracle 数据库应用 》上机课
游标管理
目标:
能够使用游标
第一部分指导
本阶段重点介绍如何使用游标来编写程序,还将介绍如何声明、打开、提取游标中的记录以及最终关
闭游标,最后介绍创建显式游标、REF 游标和循环游标的方法。
阶段一:隐式游标的工作原理
需求说明:
公司的经理想根据职员编号查看其所在的部门名称,部门名称存储在dept_details 表中。请编写
一段代码以接收职员编号并显示相应的部门名称。
实现思路:
此代码需要声明两个VARCHAR2 类型的变量。用户输入empno,该值与employee 表的empno
一致。然后将此deptcode 与dept_details 表的deptcode 列相比较,如果二者一致,则将dept_details
表的相应deptname 返回给用户。
参考步骤:
(1) 启动“ SQL Plus”。
(2 ) 在SQL* Plus 中输入下列代码。
SQLSET SERVEROUTPUT ON
SQLDECLARE
deptnm VARCHAR2(25);
dept_code VARCHAR2(10);
BEGIN
SELECT deptcode INTO dept_code
FROM employee WHERE empno=Employee_Number;
SELECT deptname INTO deptnm
FROM dept_details WHERE deptcode = dept_code;
DBMS_OUTPUT.PUT_LINE(部门名称: );
DBMS_OUTPUT.PUT_LINE();
DBMS_OUTPUT.PUT_LINE(deptnm);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(职员不存在);
END;
如果输入的empno 在表中存在,则练习 1 的输出结果如图6.1 所示。
老二牛车教育
《Oracle 数据库应用 》上机课
如果输入的empno 在表中不存在,则练习 1 的输出结果如图6.2 所示。
阶段二:显式游标的工作原理
需求说明:
公司的助理销售经理想将总净价大于 2000 元的项目的项目编号和总价值单独存储在 totalworth
表中。要求编写一段代码以显示总净价大于2000 元的项目的项目编号和总价值。
实现思路:
此代码需要声明一个游标以检索结果集的行,还需声明一个%ROWTYPE 类型的变量。Itemcursor
游标从itemfile 表中选择和提取所有行。将itemrate 和qty-hand 列中的值相乘,并检查积是否大
于2000 。如果积大于2000 ,则将这两列对应的项目和产品插入totalworth 表。
参考步骤:
(1) 启动“ SQL Plus”。
(2 ) 在SQL* Plus 中输入下列代码。
DECLARE
itemrec itemfile%ROWTYPE;
CURSOR itemcursor IS SELECT * FROM itemfile;
BEGIN
OPEN itemcursor;
LOOP
FETCH itemcursor INTO itemrec;
EXIT WHEN itemcursor%NOTFOUND;
IF itemrec.itemrate * itemre
显示全部