Oracle数据库对象 (Oracle实验)
程序员文章站
2022-06-02 16:05:27
...
实验目的
掌握数据库对象如触发器、存储过程和函数的定义和使用。
实验要求
熟悉实验室实验环境,阅读实验预备知识,掌握本实验内容涉及知识点的基本用法,了解实验中故障排除的基本方法。实验中根据实验步骤要求,写出相应的代码运行,分析代码书写是否正确,根据步骤要求独立完成实验报告。
实验环境
Oracle 10g,windows 2003;
实验内容和步骤
1.编写带有一个输入参数和一个输出参数的存储过程,输入参数为教师的编号类型,输出参数与tm表的workdays类型一致,存储过程的功能是,根据输入参数教工号的值,计算出该教师为其参与的所有项目的工作总天数;
create or replace procedure sum_work_day(str VARCHAR2)
as
sum_workday number;
begin
select sum(workdays) into sum_workday
from tm where tno=str;
if sum_workday is null then
dbms_output.put_line('There are not this teacher number!');
rollback;
return;
end if;
dbms_output.put_line(sum_workday);
end sum_work_day;
2.编写代码测试存储过程;
set serveroutput on;
--方法一:
exec sum_work_day('t001');
--方法二:
call sum_work_day('t001');
--方法三:
begin
sum_work_day('t003');
end;
3.编写一个函数,计算某个教师负责的经费总数;
create or replace function sum_fund(str VARCHAR2)return number
as
sumfund number;
begin
select sum(pfund) into sumfund
from myproject where tno=str;
return sumfund;
end;
4.编写代码测试函数;
var sumfund number;
exec :sumfund:=sum_fund('t006');
print sumfund;
5.编写一个行级前触发器,当插入、修改Teacher表中教师的工资时,如果工资高于8000,则把工资改为8000;
create or replace trigger teachersalary
before
insert or update on teacher
for each row
when (new.tsalary>8000)
begin
:new.tsalary:=8000;
end;
6.编写代码测试触发器是否工作正常;
update teacher set tsalary=9000 where tno='t001';
select * from teacher where tno='t001';
7.删除触发器;
drop trigger teachersalary;
8.删除存储过程;
drop procedure sum_work_day;
9.删除函数;
drop function sum_fund;
上一篇: PHP怎么调用其它语言程序
推荐阅读
-
数据库索引(Oracle和Mysql)学习总结
-
解决mybatis使用char类型字段查询oracle数据库时结果返回null问题
-
深入分析C#连接Oracle数据库的连接字符串详解
-
ORACLE数据库优化
-
ThinkPHP连接Oracle数据库
-
ThinkPHP连接Oracle数据库
-
数据库索引(Oracle和Mysql)学习总结
-
Myeclipse链接Oracle等数据库时lo exception: The Network Adapter could not establish the connection
-
C# Oracle数据库操作类实例详解
-
解决mybatis使用char类型字段查询oracle数据库时结果返回null问题