您的位置:首页 > 数据库 > Oracle

Oracle pl/sql学习 之 子程序 过程和函数 存储过程 存储函数

2012-11-22 22:20 706 查看
PL/SQL子程序 分为 过程,方法等。他们的创建是放在缓冲区的,所以定义,执行后不能得到保存,重复使用。这样就为什么会有了存储过程 和 存储函数了。这两种今后学习。恩,™是进过编译后存放在工作区的。额,继续过程 和 方法。

一如既往,首先来看他们的定义

过程
函数
procedure 过程名(参数1,参数2.....)
is
变量声明
begin
可执行部分
exception
异常处理部分
end;
function 函数名(参数1,参数2.....)return 数据类型
is
变量声明
begin
可执行部分
return语句。
exception
异常处理部分
end;
从上面可以看出他们至少有三个区别:

1. 关键字不同 过程为 procedure 函数为 function ,废话,但是procedure会写嚒,罗嗦

2.函数是可以有返回值的,注意到了嚒,return 数据类型。

3.正因为第二点,才有了第三点,函数在可执行部分至少有一条return 语句。

如何使用,结合PL/SQL程序块执行模式:

declare

......

begin

.......

end;

将上面定义放到declare部分,就可以用起来了。为什么不赶紧试试。

码农们更多的使用到的可能是 存储型的 过程和函数吧。那不妨接下来讲讲他们?

上面提到存储过程和存储函数他们是在创建后,经过系统编译存放在oracle数据库工作区中的,所以一次编译,随时运行。在建立之后就能随时调用了,当然你必须得保证编译通过了。也正是这个原因,所以存储过程函数一旦新建后,不能修改,那怎么做呢,只能删掉重新建立了呗。

存储过程的部分有三:一声明部分、二执行部分、三异常处理部分(面试官最喜欢问的)

create or replace procedure 存储过程名(参数1,参数2......)

[authid current_user|definer] --访问控制, 选择有二,当前用户 和所有用户

as -- as 和游标进行区别 is

声明部分;

begin

执行部分;

exception

异常部分;

end;

来点DBA知识,


A 授权 用户执行:grant execute on 存储过程名 to 用户名;

B 执行存储过程:execute 过程名(实际参数);

C 删除过程: drop 存储过程名;

存储函数 类似,他们不同点,能够想到吧,想想子程序 过程和函数区别。

create or replace function 存储函数名(参数1,参数2......) return 返回值

[authid current_user|definer] --访问控制, 选择有二,当前用户 和所有用户

as -- as 和游标进行区别 is

声明部分;

begin

执行部分;

return 表达式;

exception

异常部分;

end;

看出来不同点了吧,看出来了吧。不说了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐