首页 > 代码库 > 函数的语法(标准模版)
函数的语法(标准模版)
自定义函数 (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);
函数的语法(标准模版)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。