Oracle--plsql函数

函数

函数的参数都是in 输入参数,return是输出

语法:

create [or replace] function 函数名
(参数1 类型1, 参数2 类型2,....)
 return 返回值类型
 is/as
    [定义变量]
 begin
     --执行语句
   return 结果;
 [exception
    --异常的处理
 ] 
 End

   ***1.函数的参数只能是in模式,可以省略in
    2.函数声明的时候,必须使用return 加返回值类型,
      注意,return的返回值类型只需要告诉类型,不需要定义长度,例如: return varchar2;
      变量:数据类型 varchar2(30)
    3.函数的结果必须通过return返回出去,也就是说,在begin中使用return 结果;

无参函数:

--编写一个函数, 返回一个helloworld
--保存在数据库, 先编译, 再执行
create or replace function sayHello
return varchar2
is
--变量声明, ....
begin
   --逻辑代码
   
   --使用return 返回结果
   return 'hello world';

end;

--oracle 的函数: to_char()    to_date()
--函数的调用: 在sql语句中调用  
select sayHello() from dual;

有参函数:

--根据员工的编号, 计算员工的年收入   (工资+ 奖金)*12
create or replace function getYealSal(eno emp.empno%type)
return number
is
  v_sal emp.sal%type;
  v_comm emp.comm%type;
begin
  select sal,comm into v_sal,v_comm from emp where empno = eno;
  if v_comm is null then
    return  v_sal * 12;
   else
      return  (v_sal+v_comm) * 12;
   end if;
end;

--调用
select e.*, getYealSal(e.empno) 年收入 from emp e;

存储过程与函数的区别

    1) 关键字不一样:  存储过程: procedure, 函数: function
    2) 存储过程中参数可以有 in 输入参数,  out 输出参数, 函数中参数全部是 in 输入参数
    3) 存储过程没有确定返回值类型, 但是可以使用out参数返回结果,  函数 需要确定返回值类型, 使用return 返回结果
    4) 存储过程在pl/sql块,或者exec 调用, 而函数,只能在sql语句中调用

猜你喜欢

转载自www.cnblogs.com/64Byte/p/12746619.html