|
说明:游标中使用到了起分组功能的SELECT语句,统计出各部门的总人数和总工资。再根据部门编号和职务找到部门的经理。该程序假定每个部门有一个经理。? 【训练5】? 为雇员增加工资,从工资低的雇员开始,为每个人增加原工资的10%,限定所增加的工资总额为800元,显示增加工资的人数和余额。? 输入并调试以下程序:?
Sql代码?
- SET?SERVEROUTPUT?ON? ??
- DECLARE? ??
- ??V_NAME?CHAR(10); ??
- ??V_EMPNO?NUMBER(5); ??
- ??V_SAL?NUMBER(8); ??
- ??V_SAL1?NUMBER(8); ??
- ??V_TOTAL?NUMBER(8)?:=?800;?????--增加工资的总额???
- V_NUM?NUMBER(5):=0;?????--增加工资的人数???
- ?????????CURSOR?emp_cursor?IS? ??
- ??????????SELECT?EMPNO,ENAME,SAL?FROM?EMP?ORDER?BY?SAL?ASC; ??
- ????????BEGIN??
- ?????????OPEN?emp_cursor; ??
- ????????DBMS_OUTPUT.PUT_LINE(‘姓名??????原工资??新工资‘);? ??
- ????????DBMS_OUTPUT.PUT_LINE(‘---------------------------‘);? ??
- ?????????LOOP ??
- ????????????FETCH?emp_cursor?INTO?V_EMPNO,V_NAME,V_SAL; ??
- EXIT?WHEN?emp_cursor%NOTFOUND; ??
- ?????????V_SAL1:=?V_SAL*0.1; ??
- ????????????IF?V_TOTAL>V_SAL1?THEN??
- ????????????V_TOTAL?:=?V_TOTAL?-?V_SAL1; ??
- ????????????V_NUM:=V_NUM+1; ??
- ????DBMS_OUTPUT.PUT_LINE(V_NAME||TO_CHAR(V_SAL,‘99999‘)|| ??
- ????????TO_CHAR(V_SAL+V_SAL1,‘99999‘)); ??
- ?????????????UPDATE?EMP?SET?SAL=SAL+V_SAL1 ??
- ?????????????WHERE?EMPNO=V_EMPNO; ??
- ?????????ELSE??
- DBMS_OUTPUT.PUT_LINE(V_NAME||TO_CHAR(V_SAL,‘99999‘)||TO_CHAR(V_SAL,‘99999‘)); ??
- ?????????END?IF; ??
- ????????END?LOOP; ??
- ????????DBMS_OUTPUT.PUT_LINE(‘---------------------------‘); ??
- ????????DBMS_OUTPUT.PUT_LINE(‘增加工资人数:‘||V_NUM||‘?剩余工资:‘||V_TOTAL);?? ??
- ?????????CLOSE?emp_cursor;? ??
- ?????????COMMIT; ??
- ?????????END;??
输出结果为:?
Sql代码?
- 姓名????????原工资??新工资 ??
- ????????---------------------------------------------???
- SMITH???????1289???1418 ??
- JAMES???????1531???1684 ??
- MARTIN??????1664???1830 ??
- MILLER??????????1730???1903 ??
- ALLEN???????????1760???1936 ??
- ADAMS???????1771???1771 ??
- TURNER??????1815???1815 ??
- WARD????????1830???1830 ??
- BLAKE???????2850???2850 ??
- CLARK???????2850???2850 ??
- JONES???????????2975???2975 ??
- FORD????????????3000???3000 ??
- KING????????????5000???5000 ??
- -----------------------------------------------???
- 增加工资人数:5?剩余工资:3 ??
- PL/SQL?过程已成功完成。??
(编辑:PHP编程网 - 湛江站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|