自定义函数

函数(存储函数):

        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的自定义函数