PL/Sql过程与函数?

PL/Sql过程与函数?,sql,oracle,plsql,Sql,Oracle,Plsql,我试图找出pl/sql过程和函数之间的区别,并找到了链接。首先,让我告诉您开发人员通常如何处理pl/sql过程和函数 1) 想要得到一些返回值。他可以用函数和过程来验证它。如果他想返回一个值,他可以用return语句。如果他想返回多个值,他可以使用inout参数来实现。类似地,他可以从过程(而不是return语句)中使用inout参数来获得返回值 但只要开发人员能够使用return语句或inout参数实现其意图,这对开发人员来说并没有任何区别 因此,这里两者也可以相互替换。 2) 他可以在函数和

我试图找出pl/sql过程和函数之间的区别,并找到了链接。首先,让我告诉您开发人员通常如何处理pl/sql过程和函数

1) 想要得到一些返回值。他可以用函数和过程来验证它。如果他想返回一个值,他可以用return语句。如果他想返回多个值,他可以使用inout参数来实现。类似地,他可以从过程(而不是return语句)中使用inout参数来获得返回值

但只要开发人员能够使用return语句或inout参数实现其意图,这对开发人员来说并没有任何区别

因此,这里两者也可以相互替换。

2) 他可以在函数和过程中使用DML。所以在这里他也可以用这两种方法中的任何一种来改变数据库的状态

因此,我没有任何具体的理由可以使用哪一种,因为两者在某些方面可以相互替代。

在某种程度上,我发现唯一合理的原因是可以从SQL调用函数,而过程不能


有人能解释一下什么时候用哪一个,为什么用吗?

你已经发现了主要的区别。如果要在SQL中使用函数,可以创建该函数。当您只想在PL/SQL中使用过程时,您可以创建一个过程。

我所做的。如果没有副作用,使用函数,否则使用程序


此外,只有函数可以是“纯”(适用于函数索引)和“流水线”的。

主要有两种不同:

1:Use Procedure to take some action. But use function to return some value. 
2:You can call function from sql query but Procedure can't. 
3:Best practice to use Procedure then function if possible. 

谢谢

程序和函数具有相同的结构,除了:

函数标题必须包含一个RETURN子句,该子句指定返回值的数据类型。过程标题不能有RETURN子句

函数的可执行部分必须至少有一个RETURN语句。在过程中,RETURN语句是可选的。有关详细信息,请参见RETURN语句

有关更多信息,请参阅:

PL/SQL子程序概述
PL/SQL子程序是可以使用一组参数调用的命名PL/SQL块。子程序可以是过程也可以是函数通常,您使用过程执行操作,使用函数计算并返回值。

另请参见Oracle上的。com@Mohit-我相信以前也有人问过类似的问题。可能的Dup@Vache我发现这条语句存储过程和函数之间还有一个区别,存储过程只编译一次,可以反复调用而不必每次编译,这提高了性能并节省了时间,另一方面,函数在每次被调用时都会编译,不确定这是否真的是真的?我想在过去25年中,每个月都会问一次这个问题,很多答案中有一个:所以我可以假设我应该一直使用过程,直到和除非我想在sql查询中使用它们。我认为这是一个很好的经验法则。我会用不同的措辞:如果需要将零个或多个输入值转换为一个输出值,请使用函数。如果您想操作数据库中的数据,请使用存储过程。如果只想使用PL/SQL,我也会使用函数。这样,如果我将来需要在任何时候重用SQL中的逻辑,这是完全不重要的。使用过程只有一个优点:它允许您返回多个参数。是的,我认为这是最好的答案。另外,当您不想使用OUT和IN-OUT模式参数时,您应该考虑使用函数。如果有任何理由使用这些参数,您应该认真考虑使用存储过程。