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
先需要创建一个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;
留言
張貼留言