和存储过程类似,区别在于存储过程可以有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. macOS 中有什么好用的虚拟机软件?

    macOS 中有什么好用的虚拟机软件? https://www.zhihu.com/question/66366176/answer/268256386 问题:1.macOS是否有专门的虚拟机软件?或 ...

  2. JS操作iframe父级子级元素,jquery自动点击iframe里按钮

    在父窗口中操作 选中iframe中的id $(window.frames["ifm"].document).find("#id").attr("val ...

  3. Qt音视频开发07-合并音视频文件

    一.前言 之前已经把音视频分开存储了对应的文件,因为这个需求特别少,当然确实有部分用户是需要把音视频分开存储,但是毕竟是很少数,绝大部分的用户都是音视频合并到一个MP4文件,所以如果要合并到一个文件, ...

  4. IntelliJ IDEA安装与配置(支持最新2020.2)

    前言 我是从eclipse转IDEA的,对于习惯了eclipse快捷键的我来说,转IDEA开始很不习惯,IDEA快捷键多,组合多,记不住,虽然可以设置使用eclipse的快捷键,但是总感觉怪怪的.开始 ...

  5. Playwright自动化登录JD

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

  6. Java技术栈总结-基础

    - - -计算机技术演化- - -1 编程语言演化1.1 写在最前  此文用于个人总结,串接知识点 1.2 汇编  举例:mov .add  特点:程序量很大,几百行.几千行乃至几万行 1.3 VB- ...

  7. K_V键值存储对比

    memcached-键值存储 redis-键值存储 RocksDB-键值存储 KeyDB-键值存储 DynamoDB-键值存储 levelDB-键值存储 etcd-键值存储 Redis与其他数据库对比 ...

  8. w3cschool-微信小程序开发文档-工具

    微信小程序工具 概览 2020-07-22 15:24 更新 为了帮助开发者简单和高效地开发微信小程序,我们推出了全新的开发者工具,集成了开发调试.代码编辑及程序发布等功能. 扫码登录 启动工具时,开 ...

  9. 安装WindowsXP系统

    重点 1.虚拟磁盘类型必须选IDE,不然会找不到磁盘 2.下载地址:链接 ,提取码: 592u 3.可以将这个系统作成一个装机PE[大白菜] 4.安装成功后,调节分辨率时,安装VWmare Tool工 ...

  10. ABC224

    ABC224 D 题目大意 有一个九个点的无向图棋盘,上面有八个棋子,一次操作能将一个棋子沿边移到空点上,问将每个棋子移到与它编号相同的点最少几步. 解题思路 考虑使用 BFS. 用 string 存 ...