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() 函式。
更多技術,歡迎關注的我的頭條號。