Может ли функция oracle возвращать более одного значения

#oracle #function #plsql #parameters #procedures

#Oracle #функция #plsql #параметры #процедуры

Вопрос:

У меня путаница в отношении параметра OUT и ВОЗВРАЩАЕМОГО типа функции в oracle PL SQL. У меня есть несколько вопросов по этому поводу.

  1. Может кто-нибудь, пожалуйста, объяснить разницу между ними?
  2. Может ли функция иметь как входной, так и выходной параметр, как процедура?
  3. Возможно ли вернуть более одного значения с помощью функций?

Я искал в Интернете, но получаю разные ответы, которые еще больше меня смущают.

Комментарии:

1. один возврат вы можете смешивать in out и in out по своему усмотрению.

2. Вы можете создать a TYPE с несколькими членами и возвращать этот тип

3. Спасибо за объяснение, Кевин

Ответ №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) Да. В функциях разрешено использовать IN OUT параметры и .

  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;
  

Комментарии:

1. спасибо за ответ. Я выполнил код, приведенный для моих 3-х вопросов, и я понял, что произойдет, если мы зададим более одного параметра out в функциях.

2. У меня есть еще один запрос, во многих местах упоминалось, что не рекомендуется использовать параметр OUT в функции, и в таком сценарии лучше использовать процедуру. В чем разница. Не могли бы вы объяснить мне, почему процедура с параметром OUT лучше, чем функция? … Заранее спасибо

3. Я думаю, это означает, что ваш код будет более понятным, если вы не будете смешивать return и out параметры в функциях. Если вам нужно вернуть только одно значение, то function it — лучший способ. Если вам нужно использовать много out параметров, используйте процедуры с out параметрами. Но в PL / SQL у нас нет никаких ограничений на использование out параметров в функциях.

Ответ №2:

  1. Если вы хотите вернуть более одного значения из функции, вы можете вернуть ранее определенный тип пользователя, который содержит много полей. Однако это немного грязное решение.