zoukankan      html  css  js  c++  java
  • Oracle函数及流程控制语句

    函数的基本语法

    CREATE OR REPLACE FUNCTION "AT" 
    (p1 IN NUMBER,p2 IN NUMBER)
    RETURN VARCHAR2
    /** AS和IS没区别 **/
    AS
    BEGIN
        /** 创建局部变量写法 **/
        DECLARE
            res VARCHAR2(20);
        BEGIN
            res := 'First Test!';
            
            RETURN res;
        END;
    END;
    SELECT AT(1,2) FROM DUAL

    流程控制语句

    CREATE OR REPLACE FUNCTION "AT" 
    (p1 IN NUMBER,p2 IN NUMBER)
    RETURN VARCHAR2
    AS BEGIN
      DECLARE
            res VARCHAR2(500);
        BEGIN
            res := 'First Test!';
            
        /** if语句 **/
        IF p1=0 THEN res := CONCAT(res,'p1==0;');
        ELSE res := CONCAT(res,'p1!=0;');
        END IF;
        
        /** case...when... 类似于switch语句 **/
        CASE p1
        WHEN 0 THEN res := CONCAT(res,'p1==0;');
        ELSE res := CONCAT(res,'p1!=0;');
        END CASE;
        
        /** LOOP基本结构,可以不使用别名,使用EXIT结束循环 **/
        <<loop1>>
        LOOP
          --TODO STH
          EXIT loop1 when 1>0;
        END LOOP;
        
        /** for循环 **/
        DECLARE
        BEGIN
          FOR i IN 1..3 LOOP
            --TODO STH
            res := CONCAT(res,'');
          END LOOP;
        END;
      
        /** 带参数的循环,EXIT...WHEN...类似于do...while...语句 **/
        DECLARE
          i NUMBER:=0;
        BEGIN
          <<loop2>>
          LOOP
            i := i + 1;
            --TODO STH
            EXIT loop2 when i>3;
          END LOOP;
        END;
        
        /** 使用CONTINUE跳过本次循环 **/
        DECLARE
          i NUMBER:=0;
        BEGIN
          <<loop3>>
          LOOP
            i := i + 1;
            IF i<3 THEN CONTINUE;
            ELSE EXIT loop3;
            END IF;
          END LOOP;
        END;
        
        /** while...loop...语句,同其它语言的while循环 **/
        DECLARE
          i NUMBER:=0;
        BEGIN
          WHILE i<3
          LOOP
            i := i + 1;
            --TODO STH
          END LOOP;
        END;
             
            RETURN res;
        END;
    END;

    Out参数的使用

     /** 如果参数包含多个返回值,可以使用带out的函数 **/
    CREATE OR REPLACE FUNCTION "AOUT"
    (P1 OUT NUMBER,P2 OUT NUMBER)
    RETURN NUMBER
    AS BEGIN
      P1:=1;
      P2:=2;
      RETURN 0;
    END;
    /** 带out的函数不方便在SELECT语句中直接使用,最好在存储过程或者其它自定义函数中加工一下 **/
    CREATE OR REPLACE FUNCTION "BOUT"
    RETURN NUMBER
    AS BEGIN
      DECLARE
        RES1 NUMBER;RES2 NUMBER;P1 NUMBER;
      BEGIN
        P1 := AOUT(RES1,RES2);
        RETURN RES1+RES2;
      END;
    END;
    
    
    SELECT BOUT() FROM DUAL;
  • 相关阅读:
    ORACLE批量更新四种方法比较
    ra_customer_trx_lines_all 应收发票行
    Toad for Oracle –> Debug by APPS
    应收帐款汇总
    spring3.0.5的rmi集成使用
    java synchronized详解
    用spirng和hessian构建分布式应用(远程接口)的方法(2)
    memcached——分布式内存对象缓存系统
    用spirng和hessian构建分布式应用(远程接口)的方法(1)
    如何在Spring中集成Hessian框架
  • 原文地址:https://www.cnblogs.com/chenss15060100790/p/9123312.html
Copyright © 2011-2022 走看看