2016-10-11 154 views
-1

我对Oracle PL SQL中的函数的OUT参数和RETURN类型有困惑。我对此有几个问题。oracle函数可以返回多个值

  1. 有人可以解释两者之间的区别吗?
  2. 功能是否可以像程序一样具有IN和OUT参数?
  3. 是否可以使用函数返回多个值?

我已经在互联网上搜索,但我得到了不同的答案,这让我更加困惑。

+1

一个返回,你可以根据需要混合'in','out'和'in out'。 – SomeJavaGuy

+0

您可以创建一个包含多个成员的'TYPE'并返回该类型 –

+0

感谢您的解释Kevin –

回答

1

1)如果函数只有IN参数,那么您可以在查询中使用该函数。

create or replace function my_func(i in integer) 
return integer as 
begin 
    return i+1; 
end; 

select my_func(1) from dual; 

2)是的。在功能允许使用INOUT参数。

create or replace function my_func(i in integer, j out integer, k in out integer) return integer as 
begin 
    j:= i + 2; 
    k:= k + i; 
    return i+1; 
end; 

3)是的,你可以使用许多OUT参数,但只有一个RETURN

create or replace function my_func(i in integer, j out integer, k out integer) 
return integer as 
begin 
    j:= i + 2; 
    k:= i + 3; 
    return i+1; 
end; 
+0

感谢您的回复。我已经执行了第三个问题的代码,并且我已经理解如果我们在函数中给出多个输出参数会发生什么。 –

+0

我有另一个请求,在很多地方有人提到,在一个函数中使用OUT参数是不可取的,在这种情况下最好使用一个过程。有什么不同。你能解释一下为什么OUT参数的程序比函数更好吗? ...在此先感谢 –

+2

我认为这意味着如果你不在函数中混合'return'和'out'参数,你的代码将会更清晰。如果你只需要返回一个值,那么功能就是一个更好的方法。如果你需要使用许多'out'参数,那么使用'out'参数的程序。但是在PL/SQL中,我们没有任何限制在函数中使用out参数。 – AlexSmet

0
  • 如果你想从函数返回多于一个值,你可以返回以前定义的包含许多字段的用户类型。然而,这有点肮脏的解决方案。