Oracle Function基本语法及示例

本文深入解析了Oracle函数的基本语法,并通过多个实例演示了如何创建和使用Oracle函数,包括简单函数、带参数函数、异常处理函数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 <function_name> [(<parameters>)]
    RETURN <datatype> IS [declare section]
    BEGIN
    [<statement(s)>]
    RETURN <expression>;
    [EXCEPTION <exception handler(s);]
    END [<function_name>];
    从上面的格式可以看出:
    1)Function必须要有一个名字<function_name>;
    2)可能有一个或多个参数;
    3)必须指定返回值的类型<datatype>;
    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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值