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() 就好了,也可以跟别的选择一起用。
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() 就好了,也可以跟别的选择一起用。
相关文章推荐
- Oracle 自定义函数中的sql语句的 单引号嵌套单引号的处理 + 仿 Mysql 中的 group_cat()
- SQL Function 自定义函数
- 自定义的sql相似性函数
- sql 自定义函数--十进制转二进制
- SQL自定义函数function
- sql2005关于自定义函数的讲解
- SparkSQL和Hive自定义函数对比
- SQL自定义函数实现字符串截取转化为整型(主要用于对批量数据的操作)
- Microsoft SQL Server 自定义函数整理大全--【叶子】
- SQL 2000自定义函数调用GETDATE()报错
- SQL自定义函数split分隔字符串
- SQL中存储过程和自定义函数的区别
- 用自定义函数替换SQL中的全角数字为半角数字
- Sql建立自定义函数(函数和调用实例)(转载)
- SQL Server : T-SQL中拆分字符串的一个自定义函数
- T-SQL(二) 自定义函数和控制流语句
- 和hibernate结合使用的sql split自定义函数
- 视图或自定义函数调用存储过程结果集办法(可执行动态SQL)
- [转] Microsoft SQL Server 自定义函数整理大全--【叶子】
- csharp(C#) 调用SQL自定义函数返回值