和存储过程类似,区别在于存储过程可以有0个或多个返回,但是函数只能有唯一一个返回值 一般而言,存储过程适合批量插入,批量删除,增删改;函数则用于处理数据,查询某个值。

创建

  1. create function 函数名( 参数名 参数类型 ) returns 返回类型;
  2. begin
  3. 函数体;
  4. end

函数体肯定会有return 语句,如果没有会报错。

调用

  1. select 函数名(参数列表);

示例

比方有员工表employees

id name
1 jack

要统计员工个数则可使用以下自定义函数:

  1. # 创建
  2. create function fun() returns int
  3. begin
  4. declare temp int defualt 0;
  5. select count(*) into temp
  6. from employees;
  7. return temp;
  8. end;
  9. # 调用
  10. select func();

查看

  1. show create function 函数名;

存储过程可在mysql数据库的proc表里查看,这个表里保存了这个数据库中保存的存储过程和函数,以type字段作为区分二者的标志。

删除

  1. drop function 函数名

和存储过程一样函数一般也很少做修改,若要修改则删掉之后再创建。


循环结构

mysql中,循环有while do , loop, repeat until, 循环体里的跳转语句有 iterate ,类似于continue,开始下一轮循环, leave,类似于break 结束循环体。

while do

语法:

  1. [标签:] while 条件 do # [] 表示可选
  2. 循环体...
  3. end while [标签];

示例: 批量插入,根据次数插入多次数条到某个表中, 如果次数大于20则停止:

  1. delimiter $
  2. create procedure pro_while( in insertCount int )
  3. begin
  4. declare i int default 1;
  5. a: while i <= insertCount do
  6. if i > 20 then leave a;
  7. end if;
  8. #插入语句;
  9. set i = i +1;
  10. end while a;
  11. end $;
  12. delimiter ;

loop

语法:

  1. [标签:] loop
  2. 循环体;
  3. end loop [标签];

loop 没有条件判定,若要结束循环体只能搭配leave 标签;使用,否则就是死循环。

repeat until

语法

  1. [标签:] repeat
  2. 循环体
  3. until 满足结束循环的条件
  4. end repeat [标签];

repeat 必然会执行一次循环体,而,其条件 是 满足该条件之后就结束循环体,与while 满足条件则执行循环体恰恰相反。

mysql -- 自定义函数及循环结构的更多相关文章

  1. MySQL自定义函数(四十六)

    MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我 ...

  2. mysql 自定义函数

    原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...

  3. mysql自定义函数并在存储过程中调用,生成一千万条数据

    mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...

  4. MySQL 自定义函数CREATE FUNCTION实例

    分享一个MySQL 自定义函数CREATE FUNCTION的实例.mysql> delimiter $$mysql> CREATE FUNCTION myFunction-> (i ...

  5. R语言(自定义函数、循环语句、管道函数)

    学习R语言半年多了,以前比较注重统计方法上的学习,但是最近感觉一些基础知识也很重要.去年的参考资料是<R语言实战>,今年主要是看视频.推荐网易云课堂里的教程,很多资料都是很良心的~ 目前学 ...

  6. MySQL自定义函数

    用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 自定义函数两个必要条件: 参数:可以有另个或多个 返回值:只能有一个 创建自定 ...

  7. MySQL自定义函数用法详解-复合结构自定义变量/流程控制

    自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL. 所以UDF是对MySQL功能的一 ...

  8. MySQL自定义函数与存储过程

    1.前置条件 MySQL数据库中存在表user_info,其结构和数据如下: mysql> desc user_info; +-----------+----------+------+---- ...

  9. java mysql自定义函数UDF之调用c函数

    正如sqlite可以定义自定义函数,它是通过API定义c函数的,不像其他,如这里的mysql.sqlite提供原生接口就可以方便的调用其他语言的方法,同样的mysql也支持调用其它语言的方法. goo ...

  10. MySQL自定义函数与存储过程的创建、使用、删除

    前言 日常开发中,可能会用到数据库的自定义函数/存储过程,本文记录MySQL对自定义函数与存储过程的创建.使用.删除的使用 通用语法 事实上,可以认为存储过程就是没有返回值的函数,创建/使用/删除都非 ...

随机推荐

  1. 使用MathNet.Numerics库构造矩阵并初始化时,编译器报错“this方法没有任何重载采用"1"个参数”

    最近在使用MathNet.Numerics库作一些数据处理工作,构造一个矩阵并初始化时,编译器报错"this方法没有任何重载采用"1"个参数". 问题分析: 构 ...

  2. docker导入和导出

    save和export 镜像导入和导出有2种方式,分别为 save和load.export和import save导出的是镜像:export导出的为容器 save导出会保存镜像所有的提交记录:expo ...

  3. WxPython跨平台开发框架之动态菜单的管理和功能权限的控制

    在一个业务管理系统中,如果我们需要实现权限控制功能,我们需要定义好对应的权限功能点,然后在前端界面中对界面元素的可用性和功能点进行绑定,这样就可以在后台动态分配权限进行动态控制了,一般来说,权限功能点 ...

  4. Playwright自动化登录JD

    import base64 import random import re import time from playwright.sync_api import sync_playwright im ...

  5. 支付宝分布式事务服务-DTS

    分布式事务服务简介 注意:为向用户提供更加优质的服务,蚂蚁金融云已对中间件产品完成进一步升级改造,并计划于 2018 年 3 月 31 日下线本产品. 分布式事务服务(Distributed Tran ...

  6. labuladong的二分法查找模板

    几条规则: 1. while(left <= right)作为循环进入条件,退出则为left > right 循环内不再有return条件 2. nums[mid] == target之后 ...

  7. cmake-2

    似懂非懂,一定要搞懂基础的,剩下的边做边学,从案例中入手. 有关cmake的介绍,请参考: 1.https://www.cnblogs.com/pam-sh/p/13885959.html 2.htt ...

  8. OS:RAID

    什么是RAID? 独立磁盘冗余阵列[磁盘阵列](Redundant Arrays of Independent Disks,RAID) 磁盘阵列: 由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用 ...

  9. linux:配置NTP

    介绍 网络时间协议(Network Time Protocol,NTP),用于同步网络中各个计算机的时间的协议.其用途是将计算机的时钟同步到世界协调时 UTC. ntpd(Network Time P ...

  10. Linux基础:从命令行管理文件系统权限