Oracle存储过程实践:查询与修改工资操作示例
需积分: 0 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数据库的开发者来说是一项重要的技能提升。
2024-07-14 上传
2023-07-24 上传
2021-05-15 上传
2021-02-10 上传
2021-07-19 上传
2021-03-28 上传
2021-02-20 上传
2021-07-06 上传
2021-05-31 上传
Minwenfei
- 粉丝: 5
- 资源: 9
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析