Oracle实验四:PL/SQL编程实验指南
需积分: 24 159 浏览量
更新于2024-07-16
收藏 1.1MB DOCX 举报
Oracle实验四PL/SQL编程
Oracle实验四PL/SQL编程是Oracle数据库管理系统中的一种编程语言,用于编写存储过程、存储函数和触发器等高级数据库对象。该实验的目的是掌握PL/SQL语句块、PL/SQL的基本语法、PL/SQL的控制结构,以及PL/SQL块中使用复合数据类型和游标的方法。
一、PL/SQL语句块
PL/SQL语句块是Oracle数据库管理系统中的一种编程单元,由 declare、begin、exception 和 end 四部分组成。Declare 部分用于声明变量和游标,Begin 部分用于执行 SQL 语句和 PL/SQL 语句,Exception 部分用于处理异常,End 部分用于结束语句块。
在本实验中,我们定义了一个包含声明、执行和异常处理的语句块,以查询 EMP 表中职工号 7788 的工资为例。首先,我们声明一个变量 v_sal,类型为表中对应属性的类型,用 %type 声明。然后,在 Begin 部分,我们写了一个 Select 语句,查询 EMP 表中职工号 7788 的工资,并将结果存储在 v_sal 变量中。接着,我们进行 If 判断,如果 v_sal 小于 3000,则执行 Update 语句,把工资更改为 3000。最后,在 Exception 部分,我们处理 NO_DATA_FOUND 异常,输出没有该员工的信息。
二、PL/SQL基本语法
PL/SQL 的基本语法包括变量声明、赋值语句、控制结构、游标和异常处理等。变量声明用于声明变量的名称和类型,赋值语句用于将值赋给变量,控制结构包括 IF 语句、LOOP 语句和 CASE 语句等,用于控制程序的执行流程。游标用于遍历查询结果,异常处理用于处理程序中的错误。
在 PL/SQL 中,我们可以使用 %type 声明变量的类型,例如:`declare v_sal emp.sal%type;` 这里,v_sal 变量的类型为 emp 表中的 sal 属性的类型。我们也可以使用 Assign 语句赋值给变量,例如:`v_sal := 3000;` 这里,我们将 v_sal 变量的值赋为 3000。
三、PL/SQL控制结构
PL/SQL 控制结构包括 IF 语句、LOOP 语句和 CASE 语句等。IF 语句用于根据条件执行不同的分支,例如:
```plsql
if v_sal < 3000 then
update emp set sal = 3000 where empno = 7788;
end if;
```
这里,我们根据 v_sal 变量的值判断,如果小于 3000,则执行 Update 语句。
LOOP 语句用于重复执行某个语句块,例如:
```plsql
loop
fetch c1 into v_sal;
exit when c1%notfound;
dbms_output.put_line(v_sal);
end loop;
```
这里,我们使用游标 c1 遍历查询结果,并将结果输出到屏幕上。
CASE 语句用于根据不同的条件执行不同的分支,例如:
```plsql
case
when v_sal < 2000 then
dbms_output.put_line('低工资');
when v_sal < 3000 then
dbms_output.put_line('中等工资');
else
dbms_output.put_line('高工资');
end case;
```
这里,我们根据 v_sal 变量的值判断,并输出相应的信息。
四、PL/SQL块中使用复合数据类型和游标
PL/SQL 块中可以使用复合数据类型和游标来存储和处理数据。例如,我们可以使用 Record 类型来存储多个变量,例如:
```plsql
declare
type emp_rec is record (empno number, ename varchar2(10));
v_emp_rec emp_rec;
begin
select empno, ename into v_emp_rec from emp where empno = 7788;
dbms_output.put_line(v_emp_rec.ename);
end;
```
这里,我们使用 Record 类型来存储 empno 和 ename 两个变量,并将其赋值给 v_emp_rec 变量。然后,我们使用 Select 语句将查询结果存储在 v_emp_rec 变量中,并输出 ename 的值。
我们也可以使用游标来遍历查询结果,例如:
```plsql
declare
cursor c1 is select * from emp where empno = 7788;
v_emp_rec c1%rowtype;
begin
open c1;
loop
fetch c1 into v_emp_rec;
exit when c1%notfound;
dbms_output.put_line(v_emp_rec.ename);
end loop;
close c1;
end;
```
这里,我们使用游标 c1 遍历查询结果,并将结果输出到屏幕上。
五、PL/SQL异常处理
PL/SQL 异常处理用于处理程序中的错误。例如,在我们的实验中,我们处理了 NO_DATA_FOUND 异常,输出没有该员工的信息。我们可以使用 Exception 部分来处理异常,例如:
```plsql
begin
select sal into v_sal from emp where empno = 7788;
exception
when no_data_found then
dbms_output.put_line('There is no such employee');
end;
```
这里,我们使用 Exception 部分来处理 NO_DATA_FOUND 异常,并输出没有该员工的信息。
六、存储过程、存储函数和触发器
存储过程、存储函数和触发器是 Oracle 数据库管理系统中的高级数据库对象。存储过程是一种可以执行多个 SQL 语句的程序,存储函数是一种可以返回值的程序,触发器是一种可以在数据库中自动执行的程序。
在本实验中,我们学习了如何创建存储过程、存储函数和触发器,以及如何使用它们来管理数据库。我们也学习了如何使用 PL/SQL 语句块来编写存储过程、存储函数和触发器。
七、实验总结
本实验我们学习了 PL/SQL 语句块、PL/SQL 基本语法、PL/SQL 控制结构、PL/SQL 块中使用复合数据类型和游标、PL/SQL 异常处理,以及存储过程、存储函数和触发器。我们通过实验和实践,掌握了 PL/SQL 编程的基本技能,为后续的数据库管理和开发打下了坚实的基础。
2009-06-09 上传
2023-07-12 上传
2021-06-21 上传
2021-06-21 上传
2021-05-31 上传
2022-06-22 上传
2021-12-17 上传
2022-05-04 上传
理木客
- 粉丝: 1w+
- 资源: 16
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫