?? 提示光標_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 + -