日期:2014-05-16 浏览次数:20380 次
先来看一看什么叫存储过程吧,
在Oracle中,可以在数据库中定义子程序,这种程序块被称作存储过程(procedure)他存放在数据字典中,可以在不同的用户和应用程序之间共享,并可实现程序的优化和重用,
?
有什么优点:
?? 第一,过程在服务器端运行,速度快。
?? 第二,过程执行一次后代码就驻留在高速缓冲存储器,在以后操作中,只需从高速缓冲存储器中调用以编译代码执行,提高了系统性能。
?? 第三,确保数据库的安全,可以不授权用户直接访问应用程序中的一些表,而是授权用户执行访问这些表的过程,非表的授权用户除非通过过程,否则不能访问这些表。
?? 第四,自动完成需要预先执行的任务,过程可以在系统启动时自动执行,而不必再系统启动后在进行手动操作,大大方便了用户的使用,可以自动完成一些需要预先执行的任务。
?
先来看看几个简单的例子吧,
?
例子一:
计算指定系总学分大与40的人数;
?
create or replace procedure count_grade
(zym in char,person_num out number)
as
?
begin
?
select count(zxf)
?into person_num
?from XS
?where ZYM = zym;
end count_grade;
?
呵呵,够简单的吧
下面的用到了if?? else;
例子二:
?
统计表XS中男女同学的人数,存储过程使用到了一个输入参数和一个输出参数;
create or replace procedurre count_num
(
? sex in char,
? num out number
)
as
begin
?
if sex = '男' then
?
?? select count(XB) into num
?? from xs
?? where XB = '男';
else
?? select countXS) into num
?? from xs
?? where XB = '女';
end if;
?
end count_num;
接下来就调用一下吧,在调用过程count_num时,需要先调用out类型的参数。
declare
?? man_num number;
begin
??? count_num('男',man_num)
end;
?
再来一个,删除指定员工号的信息,
?
?