• 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;
  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    http 请求code状态码
    js 跳转链接
    a标签-伪类
    在linux中如何解压.tgz
    dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.63.dylib
    nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
    微信小程序实现左滑删除效果(原生/uni-app)
  • 原文地址:https://www.cnblogs.com/chenss15060100790/p/9123312.html
Copyright © 2020-2023  润新知