有没有办法在 PL/SQL oracle 中实现这一点?
RETURN (return_status:=1);
当我尝试这样做时,它会给出一个编译错误。如果这是不可能的,请建议一个更好的选择,而不是这样做
return_status := 1;
RETURN (return_status);
有没有办法在 PL/SQL oracle 中实现这一点?
RETURN (return_status:=1);
当我尝试这样做时,它会给出一个编译错误。如果这是不可能的,请建议一个更好的选择,而不是这样做
return_status := 1;
RETURN (return_status);
当我们执行 RETURN 时,过程在该点终止,控制流传递给调用程序。所以这个结构没有任何价值……
RETURN (return_status:=1);
...因为程序单元中的任何内容都无法return_status
在 RETURN 之后执行。
这是一个函数,return_status 是一个 OUT 参数
这就是你问题的根源:糟糕的设计。要么返回一个值,要么将其作为 OUT 参数,但不能两者兼而有之。PL/SQL 中公认的做法是函数返回一个值并且没有 OUT 参数。只有过程(没有 RETURN)有 OUT 参数。
所以你的选择是:
return 1
并且没有 OUT 参数我不明白问题是什么?
如果你想返回值 return_status 那么第二个选项就可以了(如果你真的在做一个硬编码的赋值,你可以只返回 1.
我想也许你实际上有一个外部变量 return_status 你试图通过调用这个函数来改变它的值。在这种情况下,使用一个过程并让 return_status 成为一个 IN OUT 变量(甚至可能只是 OUT)。
允许使用带有 OUT 参数的函数,但味道不对。
FUNCTIONS RETURN
AFAIK,您不能在 Oracle语句中赋值。
从 Oracle Docs 中,语法应该是
返回 [[(] 表达式 [)]];
对于表达式,请参阅表达式
根据您的要求(1 个条件而不是 2 个)我能想到的唯一解决方案是使用case expression
. 如下所示(如果您有任何条件)
RETURN
CASE when return_status is not null
THEN 1