我何时应该在PL/SQL中使用程序或功能?

use*_*398 9 sql oracle plsql

我是PL/SQL的新手,尝试了一些实践示例.
关于PL/SQL PROCEDURE&我几乎没有问题FUNCTION:

当我应该去的PROCEDURE还是FUNCTION?

手段,无论我使用FUNCTION相同的任务做什么任务都可以通过使用来完成PROCEDURE.那我为什么要去做这个功能呢?是他们的任何优势FUNCTION在PROCEDURE在PL/SQL?

FUNCTION必须回报价值.这是使用功能的唯一优势还是功能还有其他优点?

Rac*_*cha 8

我想澄清一下,您是否应该使用存储过程或函数的答案完全取决于您的业务需求和设计工作流程,前提是您明确了您的计划目标.如果你不清楚你的目标,只是你的问题的方式,没有多少编码程序和功能将是有用的.

您必须注意,存储过程和函数在PL/SQL编程中用于不同的目的.这些如下:

  1. 存储过程:

    一个.存储过程表示能够接受参数并对其进行处理的命名块(与匿名块相对).

    湾 存储过程定义了一个独立的过程工作流,您可以在其中执行一系列DML和/或其他操作.

    C.存储过程不必返回值.因此,无法从SQL语句内部调用它们.存储过程必须从名为或匿名的PL/SQL块执行.

    d.优点:

    • 一个过程不必返回一个值(这也可能是一个缺点).
    • 可以用来执行一系列DML或DDL(是的,这可以通过带有一些限制的动态SQL)操作.
    • 可以简单地从PL/SQL块中调用为独立语句.例如,

      myProcedure (x, y);
      
      Run Code Online (Sandbox Code Playgroud)

    即 缺点:

    • 无法从SQL查询中调用--DML或SELECT语句.
    • 不能在索引中使用.
  2. 功能:

    一个.函数是命名块,能够接受参数并返回值.

    湾 函数还定义了过程工作流,但在SQL语句中使用时,您无法执行任何DML或DDL.

    C.必须从SQL或PL/SQL语句调用函数,其中函数返回的值被利用 - 即,分配给变量,作为参数传递等.

    d.优点:

    • 可以在SQL查询中使用--DML或SELECT语句.
    • 如果函数是确定性的,则可以在基于函数的索引中使用(意味着对于一组确定的输入,函数在每次调用时都返回相同的输出).

    即 缺点:

    • 如果从SQL查询调用的函数包含任何DML,则查询将失败.
    • 函数必须返回一个值.因此,函数调用不能像过程调用那样是一个独立的语句.

如需进一步参考,请访问Oracle Docs.


taw*_*man 5

具有某些限制的用户定义函数可以在SELECT语句和PL/SQL IF语句中使用,而PROCEDURE不能.

你可以SELECT从一个FUNCTION就是CAST因为使用管道和表PIPE ROW的语句,但是这是一种先进的PL/SQL功能,您可以多备后用.

在线查阅Oracle开发人员文档,因为它是免费且非常好的:开发和使用存储过程

  • @TonyP对于不了解PL/SQL基础知识的人,我不打算扩展Function pragma settings等的细节 - http://docs.oracle.com/cd/B12037_01/appdev.101/b10807/ 13_elems039.htm-我的回应是提供额外学习的方向而不是一站式商店Clif注意到这一切的版本. (2认同)