⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 提示光标_parameter_练习.txt

📁 orale培训教材包括了所有的sql说明和实例
💻 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 + -