文章目录
系统函数自定义函数创建函数查看函数修改函数 & 删除函数函数参数
作用域
函数:将一段代码块封装到一个结构中,在需要执行代码块的时候,调用结构执行即可:代码复用任何函数都是有返回值的:因此函数的调用都是通过select调用函数分为:系统函数 vs 自定义函数
系统函数
系统定义好的函数:直接调用即可
自定义函数
函数要素:函数名称、参数列表(形参和实参)、返回值、函数体(作用域)
创建函数
create function 函数名称([形参列表]) returns 数据类型 -- 规定要返回的数据类型
begin
-- 函数体代码
-- 返回值:return 类型(指定数据类型)
end
如果函数体只有一句代码:可以这样
create function getstring
(str
varchar(20)) returns varchar(20)
return str
;
自定义函数的调用与系统函数是一样的:select 函数名称([实参列表])
查看函数
查看所有函数
show function status [like 'pattern'] [\G
];
查看函数的创建语句
show create function 函数名称
[\G
];
修改函数 & 删除函数
函数不能修改:先删除再创建
drop function 函数名称
;
函数参数
函数参数分为两种:形参与实参函数定义的参数称之为形参;函数调用的参数称之为实参:实参可以值常量也可以是变量形参:要求必须制定数据类型
create function 函数名
([参数名 数据类型
, 参数名 数据类型
, ...]) returns 数据类型
create function myadd
(a
int, b
int) returns int
return a
+ b
;
select myadd
(10, 20);
在函数内部使用@定义的变量,在函数外部也能使用
DELIMITER $$
CREATE FUNCTION foo
() RETURNS INT
BEGIN
SET @myname = 'kitty';
RETURN 0;
END
$$
DELIMITER ;
SELECT @myname;
作用域
mysql的作用域与JS中的作用域完全一样全局变量可以再任何地方使用;局部变量只能在函数内部使用全局变量:使用set关键字,使用@符号标识局部变量:使用declare关键字声明,没有@符号:所有局部变量的声明,必须在函数体代码开始之前
delimiter $$
create function fun
(name
varchar(10), age
int) returns int
begin
declare a
int default 10;
set @g = 'tom';
select name
into @g;
return 0;
end
$$
delimiter ;