function自定义函数

数据库中都有函数,有些函数属于系统函数,有些是自定义函数。用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如max(value)函数,其value被称为参数。
数据库函数特点如下:
1.存储函数将向调用者返回一个且仅返回一个结果值。
2.存储函数嵌入在sql中使用的,可以在select中调用,就像内建函数一样,比如cos()、hex()。
3.存储函数的参数类型类似于IN参数。

自定义函数简单语法:

create or replace function processdate(dt in varchar2,numb number) return varchar2
is
days varchar2(8);
begin
--1返回昨日日期,2返回上月末日期,3返回上季末日期,4返回上年末日期,5返回上周日期(dt日期-7),
--6返回上上月月末,7返回上上上月末,8返回上四月月末,9返回上五月月末,10返回上六月月末
if numb=1 then
days :=to_char(trunc(to_date(dt,'yyyymmdd'),'dd')-1,'yyyymmdd');
if numb=2 then
days :=to_char(trunc(to_date(dt,'yyyymmdd'),'mm')-1,'yyyymmdd');
if numb=3 then
days :=to_char(trunc(to_date(dt,'yyyymmdd'),'Q')-1,'yyyymmdd');
if numb=4 then
days :=to_char(trunc(to_date(dt,'yyyymmdd'),'yy')-1,'yyyymmdd');
if numb=5 then
days :=to_char(trunc(to_date(dt,'yyyymmdd'),'dd')-7,'yyyymmdd');
if numb=6 then
days :=to_char(add_months(last_day(to_date(dt,'yyyyMMdd')),'dd')-2,'yyyyMMdd');
if numb=7 then
days :=to_char(add_months(last_day(to_date(dt,'yyyyMMdd')),'dd')-3,'yyyyMMdd');
if numb=8 then
days :=to_char(add_months(last_day(to_date(dt,'yyyyMMdd')),'dd')-4,'yyyyMMdd');
if numb=9 then
days :=to_char(add_months(last_day(to_date(dt,'yyyyMMdd')),'dd')-5,'yyyyMMdd');
if numb=10 then
days :=to_char(add_months(last_day(to_date(dt,'yyyyMMdd')),'dd')-6,'yyyyMMdd');
end id;
return days;
end;

processdate----函数名称
dt,numb----参数及参数类型(可有参数,可有一个,也可以有多个)
return varchar2----返回参数的类型(返回参数只能有一个)
is days varchar2(8);----声明变量及变量类型
begin end----中间写语句要执行的操作,最后返回变量

函数其他命令
select processdate(20180110,2); ----函数的调用
show function status;----查看所有函数
show create function processdate;----查看具体函数
drop function processdate;----删除具体函数
注:函数的功能一般都是比较简单的,如求某个值,格式转换等。不像存储过程,一般逻辑都比较复杂。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值