Oracle关于函数function

自建函数:

作用:

1.能够满足我们实际的需求,根据不同的场景自己创建函数,自己调用

2.有返回值,我们想要得到的结果 有无返回值是函数和存储过程的区别

3.任何场景 任何地方 都可以调用函数

语法:

create or replace function fu_name (argment type)

return 返回类型 不同于存储

is 

<类型.变量说明>

begin

创建函数

return 返回值

exception

其他语句

end;

例题:

输入日期,返回日期去年的最后一天

create or replace function fu_1(date_date varchar2)

return date //返回类型

is

v_1 date; //定义返回变量,注意与返回类型一致

begin

select trunc(to_date(date_date,'yyyy/mm/dd'),'yyyy')-1 into v_1 from dual;

return v_1; //返回变量值

end fu1;

 

练习:

输入字符串类型的日期,返回当前日期是星期几

create or replace function fu_1(char_date varchar2)

return varchar2

is

v_1 varchar2(30);

begin

select to_char(to_date(char_date,'yyyy/mm/dd'),'day') into v_1 from dual;

return v_1;

end fu_1;

select fu_1('1998/02/11') from dual; 

1.传参一个部门地址,返回该部门人数 

create or replace function fu2(v_loc varchar2)

return number

is 

v_count number(4);

begin

select count(1) into v_count from emp a left join dept b on a.deptno=b.deptno where b.loc=v_loc;

return v_count;

end fu2;

例题 传入一个员工编号 返回薪资水平----12 低收入 34 中等收入 5高收入

create or replace function fu1(v_empno number)

return varchar2

is 

v_grade varchar(30);

begin

select grade into v_grade from emp a left join salgrade b on a.sal between losal and hisal where empno=v_empno;

if v_grade between 1 and 2 then v_grade:='低收入'; return v_grade;

elsif v_grade between 3 and 4 then v_grade:='中等收入'; return v_grade;

elsif v_grade>=5 then v_grade:='高收入'; return v_grade;

end if;

end fu1;

select fu1(7654) from dual

方法2

create or replace function FN_4(v_empno EMP.EMPNO%TYPE)

return varchar2

is v_shouru varchar2(30);

begin

select case when grade in (1,2) then '低收入' when grade in (3,4) then '中等收入'

when grade =5 then '高收入' end a into v_shouru from emp a left join salgrade b on a.sal between b.losal and hisal where

empno=v_empno;

return v_shouru;

end FN_4;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值