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

语法

create [or replace] function func_name[(parameter1,[,parameter2]...)] return data_type is
[inner_variable]
begin
plsql_sentence;
[exception]
[dowith_sentences;]
end [func_name];

参数说明:

func_name:函数名称,如果数据库中已经存在此名称,则可以指定[or replace]关键字,这样新的函数将覆盖原来的函数

parameter1:函数的参数,这个时可选项,因为函数可以没有参数

data_type:函数的返回值类型,这个是必选项,在返回值类型的前面要使用return关键字来说明

inner_variable:函数的内部变量,它与函数的参数不一样

plsql_sentence:PL/SQL语句,它是函数主要功能的实现部分,函数的主体

dowith_sentences:异常处理代码

环境准备

现在数据库中存在如下表数据TMP002

日期 编号 姓名 工资
20171231 CST001 侯亮平 100000
20171231 CST002 陆亦可 12000
20180101 CST001 侯亮平 102000
20180101 CST002 陆亦可 13000
20180101 CST003 祁同伟 320000

数据准备脚本

create table TMP002
(
dtdate varchar2(10) not null,
cst_no varchar2(10)not null,
cst_name varchar2(100),
sal number,
constraint pk_tmp002 primary key(dtdate,cst_no)
);
insert into tmp002 values('','CST001','侯亮平','');
insert into tmp002 values('','CST002','陆亦可','');
insert into tmp002 values('','CST001','侯亮平','');
insert into tmp002 values('','CST002','陆亦可','');
insert into tmp002 values('','CST003','祁同伟','');
COMMIT;

案例

案例一:创建函数求出20180101这天的平均工资

create or replace function func_get_avg_sal(v_dt varchar2)
return number is
num_avg_sal number;
begin
select avg(sal) into num_avg_sal from tmp002 where dtdate=v_dt;
return(round(num_avg_sal,2));
exception
when no_data_found then
dbms_output.put_line('日期不存在!');
return(0);
end func_get_avg_sal;

调用函数

方法一:使用PL/SQL块

declare
avg_sal number;
begin
avg_sal:=func_get_avg_sal('');
dbms_output.put_line('平均工资为:'||avg_sal);
end;

调用结果:

方法二:借助dual表

select func_get_avg_sal('') avg_sal from dual;

【Oracle】函数的更多相关文章

  1. oracle函数,游标,视图使用总结0.000000000000000000001

    oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...

  2. 【函数】Oracle函数系列(2)--数学函数及日期函数

    [函数]Oracle函数系列(2)--数学函数及日期函数 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...

  3. oracle函数listagg的使用说明(分组后连接字段)

    关于oracle函数listagg的使用说明 工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的: 客户希望能够实现这样的汇总合并: 那么通常我会使用 ...

  4. 浅谈Oracle函数返回Table集合

    在调用Oracle函数时为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合 ...

  5. oracle学习笔记(三)oracle函数

    --oracle 函数 --lower(char):将字符串转换为小写格式 --upper(char):将字符串转换为大写格式 --length(char):返回字符串的长度 --substr(cha ...

  6. oracle函数和存储过程有什么区别

    oracle函数和存储过程有什么区别 1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数 ...

  7. Oracle函数sys_connect_by_path 详解

    Oracle函数sys_connect_by_path 详解 语法:Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行.其语法一般为:       s ...

  8. 汉字转拼音的Oracle函数

    前言: 最近处理一个特殊的问题,需要用到汉字自动转换拼音的功能. 解决: 在这里找了不少资料,都是有所缺陷,而且也好像很绕.其实是一个很简单的东东.后来还是自己写了一个函数获取.分享出来,给有需要的X ...

  9. oracle函数操作

    感于总有些网友提出一些非常基础的问题,比如有没有实现某某功能的函数啊,某某函数是做什么用的啊,格式是什么等等,同时也感受到自己对oracle函数认识的不足,于是集中月余时间专注于oracle函数,小有 ...

  10. oracle函数,游标,视图使用总结

    oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...

随机推荐

  1. pytest文档23-使用多个fixture和fixture直接互相调用

    使用多个fixture 如果用例需要用到多个fixture的返回数据,fixture也可以return一个元组.list或字典,然后从里面取出对应数据. # test_fixture4.py impo ...

  2. Kafka分布式环境搭建 (二)赞

    这篇文章将介绍如何搭建kafka环境,我们会从单机版开始,然后逐渐往分布式扩展.单机版的搭建官网上就有,比较容易实现,这里我就简单介绍下即可,而分布式的搭建官网却没有描述,我们最终的目的还是用分布式来 ...

  3. 将MyEclipse项目导入到Eclipse中

    1.请首先确保你的eclipse是javaee版本的,或者已经安装wtp插件 2.然后修改eclipse工程下的.project文件: 3.在<natures></natures&g ...

  4. version control system:git/hg/subversion/cvs/clearcase/vss。software configruation management。代码集成CI:Cruisecontrol/hudson/buildbot

    version control system: git/hg/subversion/cvs/clearcase/vss software configruation management: daily ...

  5. linux下永久添加静态路由

    在linux下永久添加静态路由有两种方法: 添加路由的命令: 1,route add route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0 ...

  6. asp.net中使用ueditor 1.3.6上传图片问题

    在asp.net中使用ueditor 1.3.6版本上传图片时,出现上传成功但是,图片无法正常显示的问题,解决方法如下: 只需要将imageUp.ashx中的info = up.upFile(cont ...

  7. Android数字选择器-NumberPicker

    数字选择器NumberPicker是Android3.0之后引入的一个控件,比较常用,比如说手机常用的闹钟,可以选择小时和分钟,如果你需要兼容3.0之前版本,GitHub上有开源的项目,具体的下载地址 ...

  8. HTML5, CSS3, ES5新的web标准和浏览器支持一览 转

    本文整理了一些最重要(或者说人气比较高罢)的新标准,虽然它们多数还只是w3c的草案,离Recommendation级别还早,却已经成为新一轮浏览器大战中备受追捧的明星,开发者社区里也涌现出大量相关的d ...

  9. Android GUI之View事件处理(二)

    在上篇文章中,我们分析了View的事件处理过程,当然这里的View是指基本的View.当View接收到Touch事件时,首先会调用dispacheTouchEvent方法,在这个方法中会调用OnTou ...

  10. 编写批处理文件编译.Net工程

    使用随Visual Studio一块安装的devenv.com,再加上参数可以对.Net进行编译,如下 "D:\Program Files\Microsoft Visual Studio 8 ...