【问题标题】:Difference between a function and a procedure in PL/SQL [duplicate]PL / SQL中函数和过程之间的区别[重复]
【发布时间】:2012-01-23 04:49:54
【问题描述】:

可能重复:
What is the difference between function and procedure in PL/SQL?

函数总是返回一个值,但是当我们在一个过程中使用'out'时,这个过程也会返回一个值,所以请告诉我什么时候应该写一个函数,什么时候应该写一个过程?我们决定使用过程还是函数的标准是什么?

【问题讨论】:

标签: oracle plsql


【解决方案1】:

函数主要进行某种类型的计算,并且总是使用 return 语句返回一个值,并且可以在 select 语句中使用。过程用于实现业务逻辑,可以使用 out 参数返回一个或多个值。你不应该在函数中做 DML。

【讨论】:

  • 如果你在函数中使用 DML,你不能在 select 语句中使用它,否则你会得到 ORA-14551。
  • 感谢 obert 和 DCookie...所以我应该忽略那些总是说“过程不返回值”的语句,因为这是通常每个人在被问到 abt 差异 betn 函数和过程 wrt oracle 时都会给出的答案。好的,任何逻辑都可以由两者来实现..d唯一的区别是函数不能在select语句中使用(f DMl在函数中)......谢谢你的回答......我不知道我的问题已经结束了,因为它与此论坛上已经提出的问题不同...
  • 您不应忽略该陈述,而应尝试理解该陈述的含义/含义。过程不返回值。过程的 OUT 和 IN OUT 参数可以包含一个值。所以 x:=function_x();可以,但是 x:=procedure_x(a,b,c);是 NOTOK。
  • 是的,你是绝对正确的..感谢您在上面的答案中澄清这一点,但是我们可以编写代码,然后将输出传递给过程中或外部的任何变量吗?这样,我们选择functn还是proc只是选择问题吗?抱歉再次询问..谢谢..
  • 如果你想对变量 x 进行计算,你可以创建一个带有参数 x 的函数,在函数中进行计算并返回新值,或者创建一个带有 IN OUT 参数 x 的过程并更改 x 的值在程序中。所以调用它是:x = function_y(x);或过程_y(x);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多