admin管理员组文章数量:1794759
MySQL自定义函数的使用及MySQL中的流程控制语句
MySQL自定义函数
文章目录- MySQL自定义函数
- 创建自定义函数
- 自定义函数的调用
- 自定义函数的删除
- 自定义函数的维护
- 流程控制语句
- 条件控制语句
- 循环语句
创建自定义函数时, 开发人员需提供函数名、函数参数、函数体、返回值等信,创建自定义函数的语法格式为:
create function 函数名(参数1, 参数2, …) returns 返回值数据类型 [函数选项] begin 函数体; return 语句; end;
注: declare只能放在函数体的最前面, 不能放中间
说明: 1.函数是数据库对象, 创建函数时, 需要打开(选择)数据库 2.函数名不允许重名, 不允许是关键字, 建议在函数名前加前缀"fn_“或后缀”_fn" 3.函数参数是局部变量, 且必须指定数据类型,若函数无参数则是空参数函数 4.函数必须指定返回值数据类型,且必须和returns语句中的返回值数据类型一致(字符串类型的长度可以不同)
5.函数选项由以下一项或几项组成:
language sql | [not] deterministic | {contains sql | no sql | reads sql data | modifies sql data} sql security {definer | invoker} comment ‘注释’
函数选项说明: language sql: 默认选项, 说明函数体使用sql语言编写
deterministic(确定性): 该选项是为了防止"复制"时的不一致性。如果函数总是对同样的输入参数产生同样的结果,则被认为是“确定的”,否则就是“不确定的”,默认是not deterministic
contains sql: 默认选项, 表示函数体中不包含读或写数据的语句(例如set命令) no sql: 表示函数体中不包含sql语句 reads sql data: 表示函数体中包含select查询语句, 但不包含更新语句 modifies sql data: 表示函数体包含更新语句 sql security: 用于指定函数的执行许可
definer: 默认选项, 表示该函数只能由创建者调用 invoker: 表示该函数可以被其它数据库用户调用
comment: 为函数添加功能说明等注释信
自定义函数的调用调用自定义函数与调用系统函数的方法一致, 使用select语句。 如果自定义函数有参数, 需要传入参数并且参数的数量和数据类型需要与定义函数时保持一致. 空参数函数不需要传递参数. 例如:
select sname_fn(‘1906030636’)
自定义函数的删除删除函数使用"drop function 函数名;" 例如:
drop function sname_fn;
自定义函数的维护函数的维护主要是查看函数的定义,常用方法有以下四种:
MySQL中的流程控制语句包括条件控制语句和循环语句, 流程控制语句通常放在begin…end语句块中使用。 条件控制语句分为if语句和case语句,循环语句有where语句、repeat语句、loop语句。
条件控制语句-
if语句 if语句用来进行条件判断,根据不同的条件执行不同的操作。if语句执行时,首先判断if语句后的条件是否为真,为真则执行then后的语句,为假就继续执行if,直到为真则执行then后语句,若都不满足,则执行else语句后的内容。
if 条件表达式1 then 语句块1; [elseif 条件表达式2 then 语句块2;] [elseif …;] [else 语句块n;] end if;
说明: 每个if与最近的end if匹配成if语句, end if后必须以";"结束
根据判断条件不同, if语句的使用格式有以下几种;
- 单个判断条件if语句:
if 条件表达式 then 语句块; end if;
- 两个判断条件if语句:
if 条件表达式1 then 语句块1; else 语句块2; end if;
- 嵌套的if语句:
if 条件 then 语句块; else if 条件 then 语句; else if 条件 then 语句; end if; end if; end if;
- 单个判断条件if语句:
-
case语句 case语句用于实现比if语句分支更为复杂的条件判断,与Java等高级语言不同,MySQL中的case语句不需要使用break跳出.
case 表达式 when value1 then 语句1; when value2 then 语句2; … else 语句n; end case;
MySQL提供了三种循环语句: while, repeat, loop. MySQL还提供了iterate语句以及leave语句用于循环的内部控制.
-
while语句 条件表达式的值为true时,反复执行循环体,直到条件表达式的值为false
[循环标签:] while 条件表达式 do 循环体; end while[循环标签];
说明: end while后必须以";"结束
-
repeat语句 条件表达式的值为false时,反复执行循环体,直到条件表达式的值为true.
[循环标签:] repeat 循环体; until 条件表达式 end repeat [循环标签];
说明: end repeat后必须以";"结尾
-
leave语句 leave语句用于跳出当前的循环语句
leave 循环标签;
说明: leave 循环标签后必须以";"结束
-
iterate语句 iterate语句用于跳出本次循环,继而进行下次循环
iterate 循环标签;
说明: iterate 循环标签后必须以";"结束
-
loop语句 loop循环本身没有停止循环的语句,因此loop通常使用leave语句跳出loop循环
[循环标签:] loop 循环体; if 条件表达式 then leave 循环标签; end if; end loop;
说明: end loop后必须以";"结束
版权声明:本文标题:MySQL自定义函数的使用及MySQL中的流程控制语句 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686495825a73955.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论