Ton*_*ews 13
我不主张为第二个值创建一个带OUT参数的函数,因为我喜欢将函数看作一个纯概念:函数对一个或多个输入执行操作以产生一个输出.它不应改变任何论点或任何其他"副作用".
因此,如果您需要两个输出,请编写一个过程:
procedure get_sqrt_and_half
( p_input number
, p_sqrt OUT number
, p_half OUT number
)
is
begin
p_sqrt := sqrt(p_input);
p_half := p_input/2;
end;
Run Code Online (Sandbox Code Playgroud)
函数只能返回单个SQL类型,但可以是具有多个值的用户定义类型.在我建议将其作为解决方案之前,我需要了解更多有关实际最终要求的信息,但这是可能的.
create or replace type a_b is object (a number, b number);
/
create or replace function ret_a_b return a_b is
begin
return a_b(1,2);
end;
/
select ret_a_b from dual;
select d.rab.a, d.rab.b from (select ret_a_b rab from dual) d;
Run Code Online (Sandbox Code Playgroud)
您可以直接返回一个值,也可以将另一个值作为 OUT 参数返回。或者您返回包含这两个值的记录。在大多数情况下,第一个选项更容易实现。