函数的语法(标准模版)
Posted 用代码创造价值
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的语法(标准模版)相关的知识,希望对你有一定的参考价值。
自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展mysql,所以UDF是对MySQL功能的一个扩展
创建和删除自定义函数语法:
创建UDF:
CREATE [AGGREGATE] FUNCTION function_name(parameter_name type,[parameter_name type,...])
RETURNS {STRING|INTEGER|REAL}
runtime_body
简单来说就是:
CREATE FUNCTION 函数名称(参数列表)
RETURNS 返回值类型
函数体
删除UDF:
DROP FUNCTION function_name
调用自定义函数语法:
SELECT function_name(parameter_value,...)
举几个例子
例子1
简单的函数
CREATE FUNCTION simpleFun() RETURNS VARCHAR(20)
BEGIN
RETURN "Hello World!";
end;
使用函数
select simpleFun();
说明:
UDF可以实现的功能不止于此,UDF有两个关键点,一个是参数,一个是返回值,UDF可以没有参数,但UDF必须有且只有一个返回值
例子2
CREATE TABLE son (
id INT NOT NULL,
name VARCHAR(20),
pay INTEGER
);
INSERT INTO son (id, name, pay) VALUES (1,‘bol‘,20);
INSERT INTO son (id, name, pay) VALUES (2,‘davie‘,2220);
SELECT * FROM son;
DROP FUNCTION IF EXISTS deleteById;
CREATE FUNCTION deleteById(uid SMALLINT UNSIGNED)
RETURNS VARCHAR(20)
BEGIN
DELETE FROM son WHERE id = uid;
RETURN (SELECT COUNT(id) FROM son);
END
select deleteById(2);
这里我们是单步执行的,所以,我们可以不定义DELIMITER,DELIMITER的意思是定义默认的结束符号!
DELIMITER // 意思是修改默认的结束符";"为"//",以后的SQL语句都要以"//"作为结尾
在函数体重我们可以使用更为复杂的语法,比如复合结构/流程控制/任何SQL语句/定义变量等等
这个函数把‘2009-06-23 00:00:00‘转换为一个特定的字符串
DELIMITER $$
DROP FUNCTION IF EXISTS `test`;
CREATE FUNCTION `test`(gdate datetime) RETURNS varchar(255)
BEGIN
DECLARE x VARCHAR(255) DEFAULT ‘‘;
SET x= date_format(gdate,‘%Y%m%d%h%i%s‘);
RETURN x;
END $$
DELIMITER ;
SELECT test(‘2009-06-23 00:00:00‘)
这个函数截取字符串
DELIMITER $$
DROP FUNCTION IF EXISTS cutString ;
CREATE FUNCTION cutString(s VARCHAR(255),n INT) RETURNS varchar(255)
BEGIN
IF(ISNULL(s)) THEN RETURN ‘‘;
ELSEIF
CHAR_LENGTH(s)<n THEN- RETURN s;
ELSEIF
CHAR_LENGTH(S)=n THEN- RETURN ‘相等‘;
ELSE
RETURN CONCAT(LEFT(s,n),‘...‘);
END IF;
END $$
DELIMITER ;
SELECT cutString(‘323432234‘,4);
以上是关于函数的语法(标准模版)的主要内容,如果未能解决你的问题,请参考以下文章