oracle 函数不定参数入参

PL/SQL没有方便的实现,需要用巧妙的办法
先需要创建一个type,是table of number,然后用的时候要用如下的形式进行封装,我用这个办法实现了横着求平均/标准差等等统计量

函数和type可能有他隶属的库名,需要添加,因为有些账号可能只在某个库有创建权限,形如
create or replace type db_name.t_numbers as table of number;

create or replace function db_name.sum_plsql(p_numbers t_numbers)
  return number as
  rv number := 0;
begin
  for n in 1..p_numbers.count loop
    rv := rv + p_numbers(n);
  end loop;
  return rv/p_numbers.count;
end;

我这些没在navicat下跑通,可能要专门plsql开发工具,plsql developer


select sum_plsql(t_numbers(1, 1, 1, 1, 1, 1, 1, 1, 1)) from dual;

create or replace type t_numbers as table of number;


create or replace function sum_plsql (p_numbers t_numbers) return number
as
  rv number := 0;
begin
  for n in 1..p_numbers.count
  loop
    rv := rv + p_numbers(n);
  end loop;
  return rv;
end;

留言

熱門文章