您的位置:首页 > 数据库

sql 自定义函数

2012-07-19 10:55 162 查看
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() 就好了,也可以跟别的选择一起用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: