如何编写PL / SQL函数具有类似于最大函数的参数

时间:2012-02-28 02:35:52

标签: oracle plsql

在Oracle / PLSQL中,最大的函数在表达式列表中返回最大值。最大功能的语法是

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

如何用非限制性参数编写我的函数,如下所示:

myfunction(param1 , param2,...param_n)

1 个答案:

答案 0 :(得分:8)

您可以使用表类型作为参数来模拟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;