利用存储过程计算一个复杂的数据时,难免会用到自定义函数(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() 函数。