Oracle Function基本语法及示例

http://www.dedecms.com/knowledge/data-base/oracle/2012/0828/13433.html

 

Oracle基本语法 基本语法如下所示 CREATE OR REPLACE FUNCTION function_name [(parameters)] RETURN datatype IS [declare section] BEGIN [statement(s)] RETURN expression; [EXCEPTION exception handler(s);] END [function_name]; 从上面的格式
-
Oracle基本语法    基本语法如下所示
    CREATE OR REPLACE FUNCTION [()]
    RETURN IS [declare section]
    BEGIN
    []
    RETURN ;
    [EXCEPTION     END [];
    从上面的格式可以看出:
    1)Function必须要有一个名字
    2)可能有一个或多个参数;
    3)必须指定返回值的类型
    4)函数体用关键字BEGIN和END包含,必须要有RETURN返回值;
    一些简单的例子
    1、一个获取名字的函数,直接返回字符串
    CREATE OR REPLACE FUNCTION fun_getMyName
    RETURN varchar2 is
    BEGIN
    RETURN 'Luxh';
    END;
    调用:
    select fun_getMyName from dual;
    --或者
    select fun_getMyName() from dual;
    2、给定雇员ID,从雇员表中计算税收和保险的扣除函数。这个函数包含一个参数、一个本地变量描述和异常处理。
    CREATE OR REPLACE FUNCTION fun_deductions(emp_id NUMBER)--emp_id接收输入参数
    RETURN NUMBER IS
    total_deductions NUMBER;--定义返回的变量
    BEGIN
    SELECT tax + insurance--查出需要的数据
    INTO total_deductions--赋值给变量total_deductions
    FROM emp where id = emp_id;
    RETURN total_deductions;--返回结果
    EXCEPTION
    WHEN no_data_found THEN--找不到数据异常
    RETURN 0;
    WHEN OTHERS THEN--其他异常
    RETURN -1;
    END fun_deductions;
    调用:
    select fun_deductions(1) from dual;
    3、一个计算环周长的函数,两个输入参数,一个常量定义
    CREATE OR REPLACE FUNCTION fun_circum_perimeter(angle NUMBER,radius NUMBER)--定义两个参数,angle:角度,radius:半径
    RETURN NUMBER IS
    PI CONSTANT NUMBER := 3.1415926;--定义常量
    circum_perimeter NUMBER;--定义返回变量
    BEGIN
    circum_perimeter := ROUND((angle/360)*2*PI*radius,2);--计算
    RETURN circum_perimeter;
    END fun_circum_perimeter;
    调用:
    SELECT fun_circum_perimeter(360,2) FROM DUAL;
    4、选择结果返回
    CREATE OR REPLACE FUNCTION fun_if(n INTEGER)
    RETURN INTEGER IS
    BEGIN
    IF n = 0 THEN
    RETURN 1;
    ELSIF n = 1 THEN
    RETURN n;
    ELSE
    RETURN -1;
    END IF;
    END;
    5、阶乘
    CREATE OR REPLACE FUNCTION fun_factorial(n POSITIVE)
    RETURN POSITIVE IS
    BEGIN
    IF n = 1 THEN
    RETURN n;
    ELSE
    RETURN n*fun_factorial(n-1);
    END IF;
    END;
    6、斐波那契
    CREATE OR REPLACE FUNCTION fun_fibonacci(n PLS_INTEGER)
    RETURN PLS_INTEGER IS
    fib_1 PLS_INTEGER := 0;
    fib_2 PLS_INTEGER := 1;
    BEGIN
    IF n = 1 THEN
    RETURN fib_1;
    ELSIF n = 2 THEN
    RETURN fib_2;
    ELSE
    RETURN fun_fibonacci(n-2) + fun_fibonacci(n-1);
    END IF;
    END;

 

你可能感兴趣的:(Oracle_Function)