我试着查看pl / sql过程和函数之间的区别,找到了链接http://it.toolbox.com/blogs/oracle-guide/learn-plsql-procedures-and-functions-13030。首先让我告诉你开发人员通常用pl / sql过程和函数
做什么1)想要得到一些回报值。他可以用函数和程序来解决它。如果他想要返回单个值的函数,他可以使用return语句。如果他想要返回多个值,他可以使用inout参数来实现它。他可以使用inout参数从过程中获取返回值(不是使用return语句)
但只要他能够使用return语句或inout参数实现其意图,它对开发人员没有任何影响。
所以这里也可以互相替换。
2)他可以在功能和程序中使用DML。所以他也可以使用其中任何一个来改变数据库的状态。
所以我没有得到任何具体的推理,因为两者都可以在某些地方互相替换。
我在某种程度上找到的唯一合理的原因是函数可以从SQL调用,程序不能
有人可以解释在何时以及为何使用哪一个?
答案 0 :(得分:11)
你已经找到了主要的区别。如果要在SQL中使用它,可以创建一个函数。如果只想在PL / SQL中使用它,可以创建一个过程。
答案 1 :(得分:4)
我做什么。如果没有副作用,则使用功能,否则使用其他程序。
此外,只有功能可以是"纯"(适用于功能索引)和"流水线"。
答案 2 :(得分:1)
主要有两种不同:
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.
感谢。
答案 3 :(得分:1)
除了:
之外,过程和函数具有相同的结构函数标题必须包含RETURN子句,该子句指定返回值的数据类型。过程标题不能有RETURN子句。
函数的可执行部分必须至少有一个RETURN语句。在过程中,RETURN语句是可选的。有关详细信息,请参阅RETURN语句。
有关更多信息,请参阅: http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/subprograms.htm#CHDDCFHD
答案 4 :(得分:0)
http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/subprograms.htm#i4079
PL / SQL子程序概述 PL / SQL子程序是一个可以使用一组参数调用的命名PL / SQL块。子程序可以是程序或功能。 通常,您使用过程执行操作和函数来计算和返回值。