【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即可应付,大不了就是长一点而 ...
随机推荐
- 为 Tomcat 安装 apr
apr 官方介绍: Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术. APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTT ...
- oracle转义符
要使用_,则需要做如下转义 select column_name from user_tab_columns where table_name = 'SYS_TERMINAL_MAPPING' AND ...
- hue耗流量优化
ps: 使用的hue版本为 hue-3.10.0 一.[jobbrowser刷流量] 基本一分钟刷新一次,执行GET /jobbrowser/ [17/Apr/2017 14:46:26 +0800] ...
- TCP三次握手四次挥手相关问题探讨
TCP的握手挥手和状态转换是很多网络问题的基础.在此进行相关问题的讨论及记录. 首先,这幅图大致介绍了TCP连接和断开的过程: 注意其中的几个状态: LISTEN, SYN-SEND, SYN-RCV ...
- Candy leetcode java
题目: There are N children standing in a line. Each child is assigned a rating value. You are giving c ...
- 利用CSS、JavaScript及Ajax实现图片预加载的三大方法及优缺点分析
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...
- Java基础(十):封装
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法.封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访 ...
- ubuntu安装ssh服务记录
执行命令: sudo apt-get install openssh-server 有时候会出现这个错误: unable to fetch some archives ,maybe run apt- ...
- 菜鸟运维笔记:小记编译安装Nginx所遇到的坑
转载请注明出处:http://blog.csdn.net/guodongxiaren/article/details/40950249 谢谢合作 前言 无论是CentOS,或是Debian/Ubunt ...
- GetProcAddress 使用注意事项
使用 GetProcAddress Function 时,有以下几点需要特别留意: 1. 第二个参数类型是 LPCSTR,不是 : 2. 用 __declspec(dllexport),按 C 名称修 ...