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

use*_*925 9 oracle plsql

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

greatest( expr1, expr2, ... expr_n )). 
Run Code Online (Sandbox Code Playgroud)

如何使用unlimit参数编写我的函数,如下所示:

myfunction(param1 , param2,...param_n)
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 8

您可以使用表类型作为参数来模拟var args.

create or replace type VARGS as table of varchar2(32767);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用此类型作为函数的最后一个参数:

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;
Run Code Online (Sandbox Code Playgroud)

客户端代码将调用它:

exec FNC_COUNT_WITH_NAMES (vargs('Brian','Mike','John','David', 'Bob'));
Run Code Online (Sandbox Code Playgroud)

要么

select FNC_COUNT_WITH_NAMES (vargs('Brian','Mike','John','David', 'Bob')) from dual;
Run Code Online (Sandbox Code Playgroud)

  • 由于您在sql中使用了字符串,因此可以将字符串限制为4000个字符 (3认同)