📄 提示光标_parameter_练习.txt
字号:
scott中的oracle样本库雇员表:具体见cursor_parameter.ppt
SQL> desc emp;scott中的oracle样本库雇员表
名称
--------------------
EMPNO 雇员编号
ENAME 雇员名称
JOB 雇员工作
MGR
HIREDATE
SAL 雇员工资
COMM 雇员提成
DEPTNO 雇员所属部门编号
SQL> desc dept
名称 : scott中的oracle样本库部门表
--------------------------
DEPTNO 部门编号
DNAME 部门名称
LOC 部门地址
要求:用光标统计出各部门的销售总额。
提示:两个光标,以什么为光标的参数?
--cursor with parameter---------------------------------------
SET SERVEROUTPUT ON
--计算各输出该部门的总销售额
DECLARE
CURSOR c_dept IS SELECT * FROM dept ORDER BY deptno;
--用于从dept表选择相应部门编号的游标
CURSOR c_emp (p_dept VARCHAR2) IS
SELECT ename,SAL
FROM emp
WHERE deptno =p_dept
ORDER BY ename;
--用于从empt表选择对应部门的雇员信息的游标.p_dept使用于where子句中,限定部门编号
r_dept DEPT%ROWTYPE;
v_ename EMP.ENAME%TYPE;
v_SAL EMP.SAL%TYPE;
v_tot_sal NUMBER (10,2);
BEGIN
OPEN c_dept;
LOOP
--部门光标fetch出当前纪录
--当部门光标已没有纪录,退出外层循环
v_tot_sal :=0;
OPEN c_emp (r_dept.deptno);
--以deptno打开人员信息表对应的光标c_emp
LOOP
--雇员光标fetch出当前纪录
FETCH c_emp INTO v_ename,v_sal;
--当c_emp游标中没有数据时跳出内层loop
v_tot_sal :=v_tot_sal +v_SAL;
--计算部门的总销售额
END LOOP;
CLOSE c_emp;
END LOOP;
CLOSE c_dept;
END;
--------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -