创建
- 语法如下
delimiter $$ create function 函数名称(参数列表) returns 返回类型 begin sql语句 end $$ delimiter ;
- 说明:delimiter用于设置分割符,默认为分号
- 在“sql语句”部分编写的语句需要以分号结尾,此时回车会直接执行,所以要创建存储过程前需要指定其它符号作为分割符,此处使用//,也可以使用其它字符
示例
-
要求:创建函数py_trim,用于删除字符串左右两侧的空格
-
step1:设置分割符
delimiter $$
- step2:创建函数
create function py_trim(str varchar(100)) returns varchar(100) begin declare x varchar(100); set x=ltrim(rtrim(str)); return x; end $$
- step3:还原分割符
delimiter ;
查看
- 所有函数存储在mysql数据库下的proc表中
- 说明:存储过程与函数都存储在proc表中,区别在type字段,func表中无数据
- 查看python数据库中的函数
select name,type from mysql.proc where db='python';
调用
- 语法如下
select 函数名称(参数列表);
示例
- 要求:调用自定义函数py_trim
select py_trim(' a ');
删除
- 说明:函数的代码无法修改,如果不能满足要求可以删除后重新创建
- 语法如下
drop function 函数名称;
示例
- 要求:删除函数py_trim
drop function py_trim;
变量
- 声明变量,语法如下
declare 变量名 类型 default 默认值; 例: declare x varchar(100);
- 设置变量值,语法如下
set 变量名=值; 例: set x='abc';
- 使用变量:将变量写到表达式中,即可调用变量的值
判断
- 语法如下
if 条件1 then 语句1; elseif 条件2 then 语句2; else 语句 end if;
循环
- 语法如下
while 条件 do 语句; end while;
- 退出循环:leave,相当于break
- 退出本次循环:iterate,相当于continue
示例
-
要求:定义函数odd,输出1-100间的偶数
-
step1:设置分割符
delimiter $$
- step2:创建函数
create function odd () returns varchar(300) begin declare i int default 1; declare x varchar(300) default ''; while i<=100 do if i%2=0 then set x=concat(x,' ',i); end if; set i=i+1; end while; return x; end $$
- step3:还原分割符
delimiter ;
- step4:调用函数
select odd();