Oracle存储过程实践:查询与修改工资操作示例

需积分: 0 1 下载量 104 浏览量 更新于2024-08-30 收藏 4KB MD 举报
本资源是一份关于Oracle数据库存储过程的实践教程,主要针对初学者进行小练习。首先,讲解了如何在Oracle环境下创建和使用存储过程。 ## 存储过程基础 ### 创建存储过程:查询工资 1.1 存储过程示例:输出特定员工工资 在这个部分,作者展示了如何创建一个名为`P_OUTINCOME`的存储过程,该过程接收一个输入参数`IN_ID`,表示员工的工号,以及一个输出参数`OUT_SAL`,用于返回员工的工资。存储过程内部使用SQL查询从`EMP_TEST`表中根据输入的工号找到对应员工的工资,并将结果赋值给输出参数。调用这个过程的代码片段演示了如何声明并执行存储过程,通过`DBMS_OUTPUT.PUT_LINE`将输出结果打印到控制台。 ```sql CREATE OR REPLACE PROCEDURE P_OUTINCOME ( IN_ID IN EMP_TEST.WORKER_NO%TYPE, OUT_SAL OUT EMP_TEST.INCOME%TYPE) IS BEGIN SELECT EMP_TEST.INCOME INTO OUT_SAL FROM EMP_TEST WHERE EMP_TEST.WORKER_NO = IN_ID; END P_OUTINCOME; ``` ### 存储过程应用:修改工资 1.2 存储过程示例:根据部门调整工资 接下来的存储过程`P_ADDSAL`更为复杂,它接收一个`P_ROWEMP_TEST`类型的行对象作为输入,同时定义了一个游标`CIS`来遍历`EMP_TEST`表中的所有记录。该过程根据员工所属的部门增加工资: - 对于10号部门的员工,工资增加150; - 对于20号部门的员工,工资增加200; - 对于30号部门的员工,工资增加250; - 对于其他部门的员工,工资增加300。 ```sql CREATE OR REPLACE PROCEDURE P_ADDSAL ( P_ROWEMP_TEST EMP_TEST%ROWTYPE) IS ADDSAL NUMBER; BEGIN FOR CURR_ROW IN CIS LOOP IF CURR_ROW.DEPARTMENT = '10号部门' THEN ADDSAL := 150; ELSIF CURR_ROW.DEPARTMENT = '20号部门' THEN ADDSAL := 200; ELSIF CURR_ROW.DEPARTMENT = '30号部门' THEN ADDSAL := 250; ELSE ADDSAL := 300; END IF; -- 更新工资 UPDATE EMP_TEST SET INCOME = INCOME + ADDSAL WHERE WORKER_NO = P_ROWEMP_TEST.WORKER_NO; END LOOP; END P_ADDSAL; ``` ## 总结 这份资源提供了一个实战案例,通过创建和调用存储过程,帮助学习者理解Oracle数据库中存储过程的基本概念和操作。存储过程是PL/SQL语言的重要组成部分,能够封装复杂的业务逻辑,提高数据库的性能和可维护性。通过这些练习,读者可以掌握如何创建输入输出参数、处理查询和更新操作,以及如何在PL/SQL中使用游标遍历数据。这对于熟悉Oracle数据库的开发者来说是一项重要的技能提升。