【Oracle】函數常用語法

變量的定義、賦值及使用

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;

流程控制語句

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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章