函数:也是一个有名字的plsql代码块,创建之后保存在数据库中
数据库启动时加载
函数没有参数输入输出之分
但函数必须有返回值
调用时必须使用它的返回值
可以在sql 语句中使用,也可以在plsql中使用
创建语法
create [or replace] function 函数名[(形参 数据类型,...)]
return 返回值类型
is
声明部分;
begin
plsql代码块;
至少有return语句;
exception
异常处理;
end;
创建一个函数
求一个数的阶乘
create or replace function fn(n number)
return number
is
--声明一个变量保存阶乘结果
res number(16):=1;
begin
for i in 1..n loop
res:=res*i;
end loop;
--返回语句
return res;
end;
注意,不能直接在plsql代码中使用函数
begin
fn(4);--错误的,不能直接调用
end;
SQL> select fn(4) from dual;
FN(4)
----------
24
SQL>
begin
dbms_output.put_line(fn(5));
end;
输出
120
declare
--声明一个变量,保存函数返回结果
c number(16);
begin
c:=fn(6);
end;
递归调用(自己调用自己)
计算一个数据的阶乘
create or replace function f1(n number)
return number
is
begin
if n<=2 then
return n;
else
return n*f1(n-1);
end if;
end;
SQL> select f1(5) from dual;
F1(5)
----------
120
原文:https://www.cnblogs.com/inmeditation/p/12091817.html