sql 自定义函数



DELIMITER $$


CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    FUNCTION `WoShow`.`try`(aid BIGINT)
   RETURNS BIGINT(20)
    /*LANGUAGE SQL
    | [NOT] DETERMINISTIC
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    | COMMENT 'string'*/
    BEGIN
IF(aid=0) THEN  SET @num = (SELECT  COUNT(*) FROM user_upload_composition_activity  uu WHERE uu.aid>0);
ELSE SET @num = (SELECT  COUNT(*) FROM user_upload_composition_activity uu WHERE uu.aid = aid);
END IF;
RETURN @num;
    END$$


DELIMITER ;


理解:1.判断语句用= 而不是==

2.如果参数正好与字段名相同,必须给表取别名,不然 aid=aid 它会当成ture

3.if ()后面紧跟then

4.if(aid=0) 后面语句如果是 aid>0 会造成矛盾,起个别名来解决,表示不是同一个aid

5.用这个函数的时候,直接select try() 就好了,也可以跟别的选择一起用。

你可能感兴趣的:(sql,function,String,upload,Security,user)