18. 函数

    技术2025-09-09  91

    文章目录

    系统函数自定义函数创建函数查看函数修改函数 & 删除函数函数参数 作用域

    函数:将一段代码块封装到一个结构中,在需要执行代码块的时候,调用结构执行即可:代码复用任何函数都是有返回值的:因此函数的调用都是通过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 ;

    Processed: 0.008, SQL: 9