oracle存储过程和函数的区别

oracle存储过程和函数的区别,第1张

1 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有

2调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用

函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据 *** 作(比如修改、插入数据库表或执行某些DDL语句等等)

参数的返回情况来看:

如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数;

mysql 存储过程和函数的区别

1、

存储过程实现的功能要复杂一点,函数实现的功能针对性比较强。

存储过程,功能强大,可以执行包括修改表等一系列数据库 *** 作;

用户定义函数不能用于执行一组修改全局数据库状态的 *** 作。

2、

对于存储过程来说可以返回参数,如记录集,函数只能返回值或者表对象。

函数只能返回一个变量;而存储过程可以返回多个;

存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类;

存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。

3、

存储过程,可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。

4、

存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用)。

由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。

存储过程:

存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。

存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。

可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:

1、可以在单个存储过程中执行一系列 SQL 语句。

2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。

用户定义函数:

Microsoft SQL Server 2000 允许创建用户定义函数。与任何函数一样,用户定义函数是可返回值的例程。根据所返回值的类型,每个用户定义函数可分成以下三个类别:

1、返回可更新数据表的函数

如果用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表格格式结果也可以更新。

2、返回不可更新数据表的函数

如果用户定义函数包含不止一个 SELECT 语句,或包含一个不可更新的 SELECT 语句,则该函数返回的表格格式结果也不可更新。

3、返回标量值的函数

用户定义函数可以返回标量值。

1 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有

2调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用

函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据 *** 作(比如修改、插入数据库表或执行某些DDL语句等等)

参数的返回情况来看:

如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数;

从调用情况来看:

如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题

oracle函数和存储过程最大的区别就在于,函数必须带上一个return返回值,后面跟的是返回值的类型,而存储过程可以不带任何返回值。

另外,存储过程和函数同样支持in,out,in out这三种类型的参数,对应的是分别指明输入性的参数、输出型的参数、输入输出型的参数。也就是说如果我们需要返回多个值,除了可以使用存储过程来实现之外,也可以用函数来实现,方法是你将其中一个用return来返回,其他就指明该数据为out参数就可以了。

Oracle中存储过程和函数都可以返回值,但是函数必须要返回值,并一般只返回一个值,而存储过程则没有这个限制。从一般应用上来看,如果不需要返回值或者需要多个返回值,使用存储过程,如果只用一个返回值,就使用函数,从一般程序员的习惯上来看,这样更符合思维。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12171124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存