zoukankan      html  css  js  c++  java
  • Oracle Function

    基本语法如下所示

    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;
  • 相关阅读:
    Ubuntu使用命令行打印文件
    Spring ConditionalOnProperty
    Spring EnableWebMvc vs WebMvcConfigurationSupport
    commons-httpclient中的超时设置
    jdb调试命令
    caching redirect views leads to memory leak (Spring 3.1)
    Clojure web初探
    在现有原生开发Android项目中集成hbuilder开发
    MessageBoard
    CSS布局(五) 圣杯布局
  • 原文地址:https://www.cnblogs.com/luxh/p/2639832.html
Copyright © 2011-2022 走看看