我是PL / SQL的新手,尝试了一些练习示例。
我对PL / SQL PROCEDURE
& FUNCTION
:
我应该何时去PROCEDURE
或FUNCTION?
意味着,无论我使用FUNCTION
执行的任务是什么,使用PROCEDURE
都可以执行相同的任务。
那我为什么要去做这个功能呢? PL / SQL中FUNCTION
优于PROCEDURE
的任何优势?
FUNCTION
必须返回值。这是使用函数的唯一优势还是函数还有其他优点?
答案 0 :(得分:7)
我想澄清一下,您是否应该使用存储过程或功能的答案完全取决于您的业务需求和设计工作流程,前提是您明确了您的计划目标。如果你不清楚你的目标,只是你的问题的方式,没有多少编码程序和功能将是有用的。
您必须注意,存储过程和函数在PL / SQL编程中用于不同的目的。具体如下:
存储过程:
一个。存储过程表示能够接受参数并对其进行处理的命名块(与匿名块相对)。
湾存储过程定义了一个独立的过程工作流程,您可以在其中执行一系列DML和/或其他操作。
℃。存储过程不必返回值。因此,无法从SQL语句内部调用它们。存储过程必须从名为或匿名的PL / SQL块执行。
d。优点:
可以简单地从PL / SQL块中调用为独立语句。如,
myProcedure (x, y);
即缺点:
SELECT
语句。功能:
一个。函数是命名块,能够接受参数并返回值。
湾函数还定义了过程工作流,但在SQL语句中使用时,不能执行任何DML或DDL。
℃。必须从SQL或PL / SQL语句中调用函数,其中函数返回的值被利用 - 即,分配给变量,作为参数传递等。
d。优点:
SELECT
语句。即缺点:
如需进一步参考,请访问Oracle Docs。
答案 1 :(得分:5)
具有某些限制的用户定义函数可用于SELECT
语句和PL / SQL IF
语句,而PROCEDURE
则不能。
您可以SELECT
使用FUNCTION
CAST
作为使用管道和PIPE ROW
语句的表,但这是一个高级的PL / SQL功能,您可以使用很多后面。
在线查阅Oracle开发人员文档,因为它是免费且非常好的:Developing and Using Stored Procedures
答案 2 :(得分:2)
A "value"
是众多事物中的一个,包括PL / SQL表,ref游标等。除此之外,可以在SQL语句中使用函数,而程序不能使用。OUT
或IN OUT
参数从过程中返回多个值。您可以在函数中使用DML(插入,更新,删除)语句。但是,您无法在SQL查询中调用此类函数。 *例如:如果您有一个更新表的函数,则无法在任何SQL查询中调用该函数。
select myFunction(field) from sometable; --will throw error.
您可以选择使用程序还是功能取决于您的要求和舒适度。
答案 3 :(得分:0)
主要优势:
答案 4 :(得分:0)
每当您想要返回某个值并且必须进一步使用该值时,请转到函数。如果要返回一些值作为最终结果,请转到过程。
答案 5 :(得分:-1)
使用程序比使用函数更有优势:
如果我们想使用execute immediate语句执行动态SQL语句,那么我们使用Procedure。它不能在函数内部完成。
过程可以独立执行,而Function必须是可执行语句的一部分,因为它不能独立执行。
答案 6 :(得分:-1)
函数必须返回它在我们使用的计算目的中使用的值。 函数它必须只返回一个值,但它接受许多返回类型。 函数我们可以使用select语句。 程序它可能会也可能不会返回一个值。 程序是我们可以使用dml操作。 我们只能执行的程序。
答案 7 :(得分:-3)
当然,您可以在函数中执行动态sql。编写一个简单的函数来进行测试,你会发现它确实有效。
您可以在大多数时间使用功能或程序。区别在于您是想在SQL语句中使用它们还是在IF语句中使用它们然后使用函数。否则请使用最适合您和调用应用程序。