1,什么是自定义函数?

  1. 首先函数的定义:函数存储着一系列sql语句,调用函数就是一次性执行这些语句。所以函数可以降低语句重复。【但注意的是函数注重返回值,不注重执行过程,所以一些语句无法执行。所以函数并不是单纯的sql语句集合。<br /> 函数的返回值只有一个

2,自定义函数的创建

  1. 语法:
  1. DELIMITER +$$(修饰结束符号)
  2. create function 函数名 ([参数列表]) -->参数列表的格式:变量名 数据类型
  3. returns 数据类型
  4. begin
  5. DECLARE 变量名 变量类型)
  6. SET 变量名=......)
  7. sql语句;(用来获取一些需要的值)
  8. return 值;
  9. end+$$(修饰结束符号)
  10. ================================================================
  11. 例如创建一个计算2数之和的函数
  12. DELIMITER $$
  13. CREATE FUNCTION numberSum(s1 INT,s2 INT)
  14. RETURNS INT
  15. BEGIN
  16. RETURN s1+s2;
  17. END $$

3,函数的调用

3.1无参函数:

Select +自定义函数名();

3.2有参函数:

Select +自定义函数名(参数1,…);


4,函数的查看

4.1 查看函数创建的语句

show create function 函数名;

4.2 查看所有函数

show function status [like ‘pattern’];


5,函数的删除

drop function 函数名;


6,自定义函数中的局部变量和全局变量

局部变量语法:
DECLARE var_name[,varname]…date_type [DEFAULT VALUE];
局部变量作用域仅为当前函数内部
为变量赋值语法:
SET parameter_name = value[,parameter_name = value…]
SELECT INTO parameter_name
用户变量定义语法(可理解为全局变量):
SET @param_name = value
SET @allParam = 100;
SELECT @allParam;
上述定义并显示@allParam用户变量,其作用域只为当前用户的客户端有效


7,流程控制语句

在我们的自定义函数与存储过程中都可以使用流程控制语句来控制语句的执行

7.1 IF语句

IF语句用来进行条件判断。根据是否满足条件,将执行不同的语句。其语法的基本形式如下:


IF + 条件1判断语句 +then + 满足此条件1时执行的语句;
ELSEIF+ 条件2判断语句 +then + 满足此条件2时执行的语句;
ELSE +除条件1,2时的执行语句;
END if;
if流程控制语句不单独存在,必须结合函数或者存储过程使用


7.2 CASE语句

CASE语句也用来进行条件判断,其可以实现比IF语句更复杂的条件判断。CASE语句的基本形式如下:
格式1:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] …
[ELSE statement_list]
END CASE
其中,case_value参数表示条件判断的变量;
when_value参数表示变量的取值;
statement_list参数表示不同when_value值的执行语句。
格式2
CASE语句还有另一种形式。该形式的语法如下:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] …
[ELSE statement_list]
END CASE
其中,search_condition参数表示条件判断语句;
statement_list参数表示不同条件的执行语句。


7.3 where语句

WHILE语句也是有条件控制的循环语句。但WHILE语句和REPEAT语句是不一样的。
WHILE语句是当满足条件时,执行循环内的语句。
WHILE语句的基本语法形式如下:
[begin_label:] WHILE search_condition DO
statement_list
END WHILE [end_label]
其中,search_condition参数表示循环执行的条件,满足该条件时循环执行;
statement_list参数表示循环的执行语句。