如果我们在plsql存储过程中有out参数,而在函数中返回,那么我们为什么要用存储过程代替函数呢?

问题描述 投票:0回答:1

如果我们的PLSQL存储过程中只有Out参数,那么我们是否可以使用函数代替存储过程,因为函数也可以返回值,如果我们仍然使用存储过程,那么我们使用这个代替函数。

我希望我能够传达出我想问的正确问题。

sql oracle plsql plsqldeveloper plsql-package
1个回答
1
投票

两者之间的一些重要区别如下。

函数。

  • 它可以从SQL语句中调用(SELECT, UPDATE, DELETE)
  • 只能返回一个值
  • DML 不允许在其中进行操作
  • 最适合一些常见的复杂逻辑的选择值。

过程。

  • 不能从SQL语句中调用它。你必须需要PLSQL块来调用它。
  • 可以返回多个值(OUT parameters)
  • 全部 DML 允许在过程内进行操作。
  • 最适合做一些复杂的逻辑,并相应的更新表数据。

1
投票

这要看过程是做什么的。

例如,如果它(在返回一些值的同时)使用了DML操作(例如向某个表中插入行),那么函数就不能这样做--你必须使用过程。

存储过程的缺点是,你不能在一个 SELECT 声明,如

select proc_name(out_param) from dual;

在这种情况下,你必须使用一个函数。

还有: OUT 参数必须存储在某个地方,这通常是一个本地声明的变量,但这意味着你需要另一个PLSQL块来调用存储过程并查看其结果。

如果你当前的存储过程所做的一切都是为了查找&返回一些值,那么是的--函数可能是一个更好的选择。

© www.soinside.com 2019 - 2024. All rights reserved.