PL / Sql程序vs功能?

时间:2011-09-01 15:20:13

标签: sql oracle plsql

我试着查看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调用,程序不能

有人可以解释在何时以及为何使用哪一个?

5 个答案:

答案 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块。子程序可以是程序或功能。 通常,您使用过程执行操作和函数来计算和返回值。