Как написать функцию PL / SQL с параметром, аналогичным величайшей функции - PullRequest
9 голосов
/ 28 февраля 2012

В Oracle / PLSQL самая большая функция возвращает наибольшее значение в списке выражений. Синтаксис для наибольшей функции:

greatest( expr1, expr2, ... expr_n )). 

Как я могу написать свою функцию с параметром unlimit, например:

myfunction(param1 , param2,...param_n)

1 Ответ

8 голосов
/ 28 февраля 2012

Вы можете смоделировать var args, используя тип таблицы в качестве параметра.

create or replace type VARGS as table of varchar2(32767);

Затем вы можете использовать этот тип в качестве последнего параметра функции:

CREATE OR REPLACE Function FNC_COUNT_WITH_NAMES
   ( P_NAMES IN VARGS )
   RETURN number
IS
RT_COUNT NUMBER;
BEGIN
  select count(*) INTO rt_count from employees where name IN 
    ( 
       select * from TABLE(p_names))
    );
   return rt_count;
END;

Код клиентаназвал бы это с:

exec FNC_COUNT_WITH_NAMES (vargs('Brian','Mike','John','David', 'Bob'));

или

select FNC_COUNT_WITH_NAMES (vargs('Brian','Mike','John','David', 'Bob')) from dual;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...