【发布时间】:2011-11-08 12:08:52
【问题描述】:
我试图查看 pl/sql 过程和函数之间的区别,并找到了链接 http://it.toolbox.com/blogs/oracle-guide/learn-plsql-procedures-and-functions-13030。首先让我告诉你一个开发人员通常对 pl/sql 过程和函数做什么
1) 想要获得一些返回值。他可以通过函数和过程来实现它。如果他想返回单个值,他可以使用函数返回语句。如果他想返回多个值,他可以用inout参数来实现。同样他可以从procedure中用inout参数获取返回值(不是用return语句)
但是对于开发者来说,只要能够通过return语句或者inout参数实现其意图,这对开发者没有任何影响。
所以这里也可以互相替换。
2) 他可以在函数和过程中使用 DML。所以在这里他也可以使用其中任何一个来改变数据库的状态。
所以我没有得到任何具体的推理,因为两者可以在某些情况下相互替换。
在某种程度上我发现的唯一合理的原因是函数可以从 SQL 调用,过程不能
有人能解释一下何时以及为什么使用哪一个吗?
【问题讨论】:
-
参见 Oracle.com 上的 Functions vs Stored Procedures
-
@Mohit - 我相信以前有人问过类似的问题。可能重复stackoverflow.com/questions/1179758/…
-
@Vache 我发现了这个语句 存储过程和函数还有一个区别,存储过程只编译一次,可以反复调用,无需每次编译,这样可以提高性能,节省时间,另一方面,函数每次在forums.oracle.com/forums/thread.jspa?messageID=547397 调用时都会编译,不确定是否真的如此?
-
我认为在过去的 25 年里,这个问题肯定是每个月都会被问到一次,显然是那些刚接触计算和数学的人。