函数

函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数。

1.创建函数:

函数的创建语法与存储过程比较类似,它也是一种存储在数据库中的命名程序块,函数可以接受
零或多个输入参数,并且函数必须有返回值(而这一点存储过程是没有的),其定义语法格式如下:
create [or replace] function fun_name[(parameter1[,parameter2]…) return data_type is
[inner_variable]
begin
plsql_ sentence;
[exception]
[dowith _ sentences;]
end [fun_name];

  • fun_name:函数名称,如果数据库中已经存在了此名称,则可以指定“or replace”关键字,这样新的函数将覆盖掉原来的函数。
  • parameter1:函数的参数,这是个可选项,因为函数可以没有参数。
  • data_type:函数的返回值类型,这是个必选项。在返回值类型的前面要使用return 关键字来标明。
  • inner_variable:函数的内部变量,它有别于函数的参数,这是个可选项。
  • plsql_ sentence:PL/SQL 语句,它是函数主要功能的实现部分,也就是函数的主体。
  • dowith _ sentences:异常处理代码,也是PL/SQL 语句,这是一个可选项。
由于函数有返回值,所以在函数主体部分(即begin 部分)必须使用return 语句返回函数值,并且要求返回值的类型要与函数声明时的返回值类型(即data_type)相同。

案例:定义一个函数,用于计算emp 表中指定某个部门的平均工资,代码及运行结果如下:
SQL> create or replace function get_avg_pay(num_deptno number) return number is //创建一个函数,该函数实
现计算某个部门的平均工资,传入部门编号参数
num_avg_pay number; //保存平均工资的内部变量
begin
select avg(sal) into num_avg_pay from emp where deptno=num_deptno; //某个部门的平均工资
return(round(num_avg_pay,2)); //返回平均工资
exception

when no_data_found then //若此部门编号不存在

dbms_output.put_line('该部门编号不存在');

return(0); //返回平均工资为0
end;
/

函数已创建


2.调用函数

由于函数有返回值,所以在调用函数时,必须使用一个变量来保存函数的返回值,这样函数和这个变量就组成了一个赋值表达式。以调用上面的get_avg_pay 函数为例,看看如何调用函数。案例:调用函数 get_avg_pay,计算部门编号为10 的雇员平均工资并输出,代码如下。

SQL> set serveroutput on

SQL> declare

avg_pay number; //定义变量,存储函数返回值

begin

avg_pay:=get_avg_pay(10); //调用函数,并获取返回值

dbms_output.put_line('平均工资是:'||avg_pay); //输出返回值,即员工平均工资

end;

/

3.删除函数

删除函数的操作比较简单,使用drop function 命令,其后面跟着要删除的函数名称,其语法格式如下:

drop function fun_name;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值