自定义函数
函数(存储函数):
1、需要返回值;
2、可以指定0~n个参数。
语法格式:
create function 函数名([参数])
returns type
[characteristics] 函数体
charcateristics指定存储函数的特性,取值举例:
1、 sql security {definer|invoker};指明谁有权限来执行;
definer表示只有定义者才能执行;
invoker表示拥有权的调用者才可以执行,默认情况下,系统指定为definer;
2、 comment’string’:注释信息,才可以用来描述存储函数。
函数体:
① 函数体是由SQL代码构成;
② 函数体可以是简单的SQL语句,比如:简单的查询语句
③ 函数体如果为复合结构需要使用begin…end语句
④ 复合结构可以包含声明、流程控制。
delimiter // -- 设置结束符为//
create function ym_date(mydate date)
returns varchar(15) -- returns指定函数的返回类型
begin
return date_format(mydate,'%Y-%m'); -- 函数需要返回值,return返回相应的处理结果
end//
delimiter ; -- 恢复结束符
删除自定义函数:
drop function [if exists] func_name;
变量:可以在存储程序(存储过程和函数)中使用变量。
在存储程序中变量的作用范围在begin...end之间。
语法格式:
declare var_name[,var_name] … date_type [default value];
两种赋值方式:
Set var_name = expr[,var_name = expr]…;
Select col_name[,…] into var_name[…] table_expr;
If分支语句:
if condition then
……;
[elseif condition then]
……;
[else]
…;
end if;
case分支语句:
case case_expr
when when_value then statement_list;
[when when_value then statement_list;]…
[else statement_list;]
end case;
case
when expr_condition then statement_list;
[when expr_condition then statement_list;]…
[else statement_list;]
end case;
while循环语句:
语法格式:
[while_label:]while condition do
…
End while[while_libe];
loop循环语句:该循环没有内置循环条件,但可以通过leave语句退出循环。
语法格式:
[loop_label:]loop
Statement_list;
End loop [loop_label];
leave语句用来跳出循环,语法格式:leave label;
repeat循环语句:该语句执行一次循环体,之后判断condition条件是否为真,为真则退出循环,否则继续执行循环体。
语法格式:
[repeat_label:] repeat
…;
until expr_condition
end repeat [repeat_label:];
更多推荐
MySQL的自定义函数
发布评论