首页 > 代码库 > oracle 自定义函数

oracle 自定义函数

函数

  函数与存储过程相似,也是数据库中存储的已命名PL-SQL程序块。函数的主要特征是它必须有一个返回值。通过return来指定函数的返回类型。在函数的任何地方可以通过return expression语句从函数返回,返回类型必须和声明的返回类型一致。

语法:

  create [or replace] function function_name

  [(parameter_list)]

  return datatype

  {is/as}

  [local_declarations]

  begin

    executable_statements;

  [exception

    exception_handlers;]

  end;

说明:

  function_name:函数名称。

  parameter_list:函数列表,可选。

  return 自居:指定函数的返回类型,不能指定大小。

  local_declarations:局部变量声明,可选。

  executable_statements:要执行的PL-SQL语句。

  exception_handlers:异常处理,可选。

  or repalce:是否覆盖,可选。

例:根据员工编号获得员工薪水。

--根据no查询sal
CREATE OR REPLACE FUNCTION fun_getSal(eno NUMBER)
RETURN NUMBER   --返回类型
AS
v_sal emp.sal%TYPE;
BEGIN
  SELECT sal INTO v_sal FROM emp WHERE empno = eno;
  RETURN v_sal;
  EXCEPTION
    WHEN OTHERS THEN
      raise_application_error(-20012,该雇员不存在);
END fun_getSal;

调用函数:

--调用函数,自定义异常处理
DECLARE 
  v_sal NUMBER;
  emp_20012 EXCEPTION;
  PRAGMA EXCEPTION_INIT(emp_20012,-20012);
BEGIN
  v_sal:=fun_getsal(7788);
  dbms_output.put_line(sal:||v_sal);
  EXCEPTION
    WHEN emp_20012 THEN
      dbms_output.put_line(该雇员不存在);
END;

注意:

  1、函数参数和返回类型只声明参数,不指定大小。

  2、可执行部分至少有一条return语句。

  3、调用函数时,不能将函数作为单独的语句存在,可以作为表达式的一部分。

适用场合:

  1、如果需要返回多个值和不返回值,就使用存储过程;如果只需要返回一个值,就使用函数。

 

  2、存储过程一般用于执行一个指定的动作,函数一般用于计算和返回一个值。

 

  3、可以再SQL内部调用函数来完成复杂的计算问题,但不能调用存储过程。

 

oracle 自定义函数