博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Oracle】函数
阅读量:5782 次
发布时间:2019-06-18

本文共 1686 字,大约阅读时间需要 5 分钟。

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

语法

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('20171231','CST001','侯亮平','100000');insert into tmp002 values('20171231','CST002','陆亦可','12000');insert into tmp002 values('20180101','CST001','侯亮平','102000');insert into tmp002 values('20180101','CST002','陆亦可','13000');insert into tmp002 values('20180101','CST003','祁同伟','320000');COMMIT;

 

案例

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

create or replace function func_get_avg_sal(v_dt varchar2) return number isnum_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('20180101');  dbms_output.put_line('平均工资为:'||avg_sal);end;

调用结果:

方法二:借助dual表

select func_get_avg_sal('20180101') avg_sal from dual;

转载地址:http://mqcyx.baihongyu.com/

你可能感兴趣的文章
威胁快报|ProtonMiner挖矿蠕虫扩大攻击面,加速传播
查看>>
<<深入PHP面向对象、模式与实践>>读书笔记:面向对象设计和过程式编程
查看>>
架构的“一小步”,业务的一大步
查看>>
聊聊flink JobManager的heap大小设置
查看>>
PAT A1116
查看>>
App上架/更新怕被拒? iOS过审“避雷秘籍”请查收
查看>>
CentOS 7 防火墙操作
查看>>
关于 top 工具的 6 个替代方案
查看>>
程序员最讨厌的9句话,你可有补充?
查看>>
JAVA程序设计:线程的概念
查看>>
linux下安装mongodb
查看>>
PAT A1037
查看>>
DevOps自动化工具集合
查看>>
淘宝放大镜的两种实现方法JS
查看>>
浅谈RPC
查看>>
Unity C# 打包AssetBundle与场景
查看>>
YYCache 源码学习(一):YYMemoryCache
查看>>
猴子数据解决微信端不能直接跳浏览器的方法
查看>>
深圳Android技术大会分享
查看>>
跨域请求图解
查看>>