MySQL(4)-自定义函数
来源:互联网 发布:炫踪网络裁人 编辑:程序博客网 时间:2024/05/18 01:54
MySQL自定义函数
自定义函数
用户自定义函数(user-defined function, UDF),是一种对MySQL扩展的途径,其用法与内置函数相同,自定义函数的两个必要条件:
- 参数
- 返回值
函数可以返回任意类型的值,同样可以接收这些类型的参数(理论上MySQL自定义函数参数不能超过1024个)
创建自定义函数
CREATE FUNCTION [函数名] RETURNS [返回值类型:STRING|INTEGER|REAL|DECIMAL] [函数体];
函数体中:
1. 函数体由合法的SQL语句构成;
2. 函数体可以是简单的SELECT或INSERT语句;
3. 函数体如果为复合结构则使用BEGIN…END语句;
4. 复合结构可以包含声明,循环,控制结构;
创建不带参的函数
SELECT NOW();//显示当前时间,如果我要用中文显示,则需要用到DATE_FORMAT()函数及就是:SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H点%i分%s秒');但是每次这样查询又太麻烦,于是可以创建一个不带参的函数来完成,函数如下:CREATE FUNCTION ft() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(), '%Y年%m月%d日 %H点%i分%s秒'); //输入SELECT ft(),结果为xx年xx月xx日
查看数据库中存在的自定义函数
SHOW FUNCTION STATUS;
创建带参数的函数
CREATE FUNCTION func(mum1 SMALLINT UNSIGNED, num2 SMALLINT UNSIGNED)RETURNS FLOAT(10, 2) UNSIGNEDRETURN (num1 + num2)/2;//带有参数的求两数平均值的函数
创建具有复合结构的函数体
为了实现一个输入名字即插入一条数据的函数功能,我们可以这样:
CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS INT UNSIGNEDRETURN INSERT test(username) VALUES(username);//这条语句实际上是错误的,因为最后INSERT语句执行完毕后的分号会归纳在SQL语句中而不被当做函数结束的标识
这时候需要修改结束标识,即用DELIMITER
//表示结束时必须输入//
eg:SELECT VERSIONG();//上述例子末尾加入//才会输出结果
在此基础上我们才可以执行创建一个带有SQL语句的函数(这样当分号被认为是SQL语句的结束符时,我们可以规定其他符号为函数体结束符,例如上述的//)
CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS INT UNSIGNEDRETURNINSERT test(username) VALUES(username);LAST_INSERT_ID();//
上述语句也是错误的,因为规定返回值INT类型,而INSERT不能作为返回值返回INT类型,我们继续修改,要用到BEGIN…END语句分块
CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS INT UNSIGNEDBEGININSERT test(username) VALUES(username);RETURN LAST_INSERT_ID();//
上述语句执行结束后则创建函数成功,然后我们再用DELIMITER ;把结束符改回来即可,而且并不影响之前创建的函数的使用
0 0
- MySQL(4)-自定义函数
- 4)mysql自定义函数和存储过程
- [原创]Mysql自定义函数
- 两个mysql自定义函数
- mysql自定义函数
- MySQL自定义函数
- mysql自定义函数篇
- mysql 自定义函数
- mysql自定义函数篇
- mysql 自定义函数
- mysql中的自定义函数
- MySQL自定义函数应用
- mysql自定义函数篇
- mysql写自定义函数
- mysql创建自定义函数
- mysql自定义函数
- mysql自定义函数篇
- Mysql自定义函数
- simulink状态变量初值如何设定
- .net Core竟然支持xamrain
- 3抽象工厂模式(Abstract Factory)
- yii2框架(一):下载与安装
- Linux crontab定时执行任务 命令格式与详细例子
- MySQL(4)-自定义函数
- 洛谷 P3768
- 【RabbitMQ】——centos7安装rabbitmq教程
- 解决异常 Data truncation: Incorrect datetime value: '' for column 'ordertime'
- mount挂接
- HTML5滑动(swipe)事件
- JAVA解析Excel文件的两种方式 --Poi技术
- 青春摘抄美文
- 【Android studio】使用小米手机(MIUI8)真机调试