-1

有没有办法在 PL/SQL oracle 中实现这一点?

    RETURN (return_status:=1);

当我尝试这样做时,它会给出一个编译错误。如果这是不可能的,请建议一个更好的选择,而不是这样做

   return_status := 1;
   RETURN (return_status);
4

4 回答 4

2

当我们执行 RETURN 时,过程在该点终止,控制流传递给调用程序。所以这个结构没有任何价值……

 RETURN (return_status:=1);

...因为程序单元中的任何内容都无法return_status在 RETURN 之后执行。

这是一个函数,return_status 是一个 OUT 参数

这就是你问题的根源:糟糕的设计。要么返回一个值,要么将其作为 OUT 参数,但不能两者兼而有之。PL/SQL 中公认的做法是函数返回一个值并且没有 OUT 参数。只有过程(没有 RETURN)有 OUT 参数。

所以你的选择是:

  1. return 1并且没有 OUT 参数
  2. 设置 OUT 参数 = 1 并返回其他内容
  3. 改为程序
于 2019-04-25T10:14:05.580 回答
0

我不明白问题是什么?

如果你想返回值 return_status 那么第二个选项就可以了(如果你真的在做一个硬编码的赋值,你可以只返回 1.

我想也许你实际上有一个外部变量 return_status 你试图通过调用这个函数来改变它的值。在这种情况下,使用一个过程并让 return_status 成为一个 IN OUT 变量(甚至可能只是 OUT)。

于 2019-04-25T07:23:27.470 回答
0

允许使用带有 OUT 参数的函数,但味道不对。

于 2019-04-25T10:24:44.443 回答
0

FUNCTIONS RETURNAFAIK,您不能在 Oracle语句中赋值。

从 Oracle Docs 中,语法应该是

返回 [[(] 表达式 [)]];

对于表达式,请参阅表达式

根据您的要求(1 个条件而不是 2 个)我能想到的唯一解决方案是使用case expression. 如下所示(如果您有任何条件)

RETURN
    CASE when return_status is not null  
         THEN 1
于 2019-04-25T07:56:19.840 回答