1. 程式人生 > >mysql 自定義函式的常見語法

mysql 自定義函式的常見語法

利用儲存過程計算一個複雜的資料時,難免會用到自定義函式(Function);

一:例項:

CREATE  FUNCTION `one_day_N`(lastAcctDate DATETIME, freqCounter DECIMAL, startDate DATETIME) RETURNS INT(11)
    COMMENT '計算一天N次的計費次數'
BEGIN
   DECLARE return_val INT DEFAULT 0;
   DECLARE HOUR INT;
   DECLARE CHOUR INT;
   DECLARE start_time DATETIME;
   IF lastAcctDate IS NULL 
    THEN 
 SELECT get_start_time(lastAcctDate,startDate) INTO start_time;
          SELECT DATE_FORMAT(start_time , '%H') INTO HOUR;
   IF HOUR<12 THEN  
SET return_val=freqCounter;
   ELSE
SET return_val=freqCounter/2;
   END IF;
   
    ELSE 
     IF DATE_FORMAT(NOW(),'%Y-%m-%d')!=DATE_FORMAT(lastAcctDate,'%Y-%m-%d')
THEN 
          IF freqCounter=1 
            THEN
               SET return_val=1;
          ELSE 
          SELECT DATE_FORMAT(NOW(),'%H') INTO CHOUR;
   IF CHOUR<12
   THEN 
                SET return_val=freqCounter/2;
            ELSE  
                SET return_val=freqCounter;
            END IF;
          END IF;
        
      ELSE
 SET return_val=0;
      END IF;
    
    END IF;
  
 
RETURN return_val;


語法總結:

1 建立函式: create Function 函式名稱 (輸入引數變數,型別) RETURNS 型別 begin ... return 返回值 end (中間是具體實現)

2 變數定義關鍵字:declare 變數名+型別。

3流程控制: if(condition)then ...elseif(condition)  then ... else...  end if;

4 變數賦值: select ..into 變數名 或者是 set 變數名=value

5 date_format() 函式。

更多技術,歡迎關注的我的頭條號。