【Oracle】函数
函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数。
语法
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】函数的更多相关文章
- oracle函数,游标,视图使用总结0.000000000000000000001
oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...
- 【函数】Oracle函数系列(2)--数学函数及日期函数
[函数]Oracle函数系列(2)--数学函数及日期函数 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...
- oracle函数listagg的使用说明(分组后连接字段)
关于oracle函数listagg的使用说明 工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的: 客户希望能够实现这样的汇总合并: 那么通常我会使用 ...
- 浅谈Oracle函数返回Table集合
在调用Oracle函数时为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合 ...
- oracle学习笔记(三)oracle函数
--oracle 函数 --lower(char):将字符串转换为小写格式 --upper(char):将字符串转换为大写格式 --length(char):返回字符串的长度 --substr(cha ...
- oracle函数和存储过程有什么区别
oracle函数和存储过程有什么区别 1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数 ...
- Oracle函数sys_connect_by_path 详解
Oracle函数sys_connect_by_path 详解 语法:Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行.其语法一般为: s ...
- 汉字转拼音的Oracle函数
前言: 最近处理一个特殊的问题,需要用到汉字自动转换拼音的功能. 解决: 在这里找了不少资料,都是有所缺陷,而且也好像很绕.其实是一个很简单的东东.后来还是自己写了一个函数获取.分享出来,给有需要的X ...
- oracle函数操作
感于总有些网友提出一些非常基础的问题,比如有没有实现某某功能的函数啊,某某函数是做什么用的啊,格式是什么等等,同时也感受到自己对oracle函数认识的不足,于是集中月余时间专注于oracle函数,小有 ...
- oracle函数,游标,视图使用总结
oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...
随机推荐
- IIS 未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral,
在Windows Server 2008中的IIS服务器中部署WCF服务程序时,通过浏览器访问报出如下错误: 未能从程序集“System.ServiceModel, Version=3.0.0.0, ...
- Android Binder分析二:Natvie Service的注冊
这一章我们通过MediaPlayerService的注冊来说明怎样在Native层通过binder向ServiceManager注冊一个service,以及client怎样通过binder向Servi ...
- Ext.Toolbar.Fill()
tbar : ['-',new Ext.form.Label({ text : '产品代码:' }),new Ext.form.TextField({ id : 'cpdm', name : 'cpd ...
- 使用Dictionary泛型集合封装业务逻辑判断 z
C#2.0 提供了Dictionary 泛型类,它提供了从一组键到一组值的映射.字典中的每个添加项都由一个值及其相关联的键组成.通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictio ...
- Android 手动按power键上锁,没有锁屏提示音,无法恢复【单机必现】
測试步骤 [測试版本号]T0606 [模块版本号] NAVI锁屏:5.0.0.ck [測试步骤] 1.手动按power键上锁, [測试结果] 没有锁屏提示音,无法恢复[单机必现] [预期结果] 有提示 ...
- .NET:CLR via C# The Interlocked Anything Pattern
Many people look at the Interlocked methods and wonder why Microsoft doesn't create a richer set of ...
- 如何让Oracle表及字段显示为区分大小写(转)
http://www.itpub.net/thread-1703955-1-1.html
- Ubuntu 16.04 重置密码
忘记了你的Ubuntu用户密码,登录不了系统:不要紧,在Ubuntu上重置密码是很简单的,即使你忘记了用户名. #1 进入Recovery Mode Recovery Mode即恢复模式:在Grub启 ...
- how to configure logback for Mybatis to print my SQL
To log SQL statements for particular mybatis mapper set DEBUG (TRACE to see query parameters and res ...
- ubuntu 12.04 安装无线网卡驱动
安装ubuntu 12.04后,无线网卡不可用,采用以下方式解决: 1.在终端中运行如下命令,重新安装b43相关的全部驱动和firmware: sudo apt-get install bcmwl-k ...