[Oracle] function common grammar

The definition of variables, assignment and use

declare
   l_dept    integer := 20;
   currtime  date := sysdate;
   l_nam     varchar2(20) := to_char(add_months(trunc(sysdate),-12),'yyyymmdd');
   						  -- to_char(sysdate,'MM')-13;

   type num_list is varray(4) of number;
   arr_id num_list := num_list(100,101,123,33,234);

 begin
      l_dept := 30;
      dbms_output.put_line(l_dept);
      dbms_output.put_line(currtime);
      dbms_output.put_line(l_nam);
      dbms_output.put_line(arr_id(1));      
 end;

Flow control statements

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;
Published 107 original articles · won praise 88 · views 260 000 +

Guess you like

Origin blog.csdn.net/Code_shadow/article/details/103518216