创建函数

DELIMITER $$
DROP FUNCTION IF EXISTS `test` $$
CREATE FUNCTION `test`(a int ,b int)
RETURNS int 
BEGIN
  IF (A>B) THEN
    RETURN a+b;
  ELSE
    RETURN a-b;
  END IF;
END
DELIMITER;

创建存储过程

DELIMITER $$
DROP PROCEDURE IF EXISTS myProc $$
CREATE PROCEDURE myProc()
BEGIN
  DECLARE v_sex int;

  SELECT sex into v_sex from user where id=3;      // 取出sex 给 v_sex 赋值,select sex into v_sex //  SET vv=a+b; //赋值
  if(v_sex==0) THEN
    SELECT '男生';
  ELSE
    SELECT '女生';
  END IF;
END

DELIMTER;

调用存储过程 call myProc();

delimiter就是告诉mysql解释器,该段命令是否已经结束了,是否可以执行了。
默认情况下,delimiter是分号;,遇到分号就执行。
后面的双美元符号 就是告诉mysql,遇到双美元符号再执行

show function status; // 查看自定义函数

show procedure status; // 查看自定义存储过程

输入输出参数

DELIMITER $$
DROP PROCEDURE IF EXISTS myReslt $$
CREATE PROCEDURE myReslt (IN a INT , IN b INT, OUT c INT)  // in 输入参数,out输出参数
BEGIN
SET c=a+b;
SELECT * FROM user WHERE id BETWEEN 2 AND c;
END

DELIMTER;

call myReslt (2,3,@c);
select @c;

存储过程与自定义函数的区别:

存储过程实现的过程要复杂一些,而函数的针对性较强;

存储过程可以有多个返回值,而自定义函数只有一个返回值;

存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;

存储过程存在的必要性(好处):

存储过程说白了就是把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要的时候从数据库中直接调用,省去了编译的过程.

提高了运行速度;

同时降低网络数据传输量(你觉得传一堆SQL代码快,还是传一个存储过程名字和几个参数快

mysql自定义函数语法的更多相关文章

  1. mysql 自定义函数

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

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

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

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

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

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

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

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

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

  6. mysql MAX()函数 语法

    mysql MAX()函数 语法 作用:返回一列中的最大值.NULL 值不包括在计算中.直线电机模组--BZD80N 语法:SELECT MAX(column_name) FROM table_nam ...

  7. mysql LAST()函数 语法

    mysql LAST()函数 语法 作用:返回指定的字段中最后一个记录的值. 语法:SELECT LAST(column_name) FROM table_name 注释:可使用 ORDER BY 语 ...

  8. mysql FIRST()函数 语法

    mysql FIRST()函数 语法 作用:返回指定的字段中第一个记录的值.直线电机选型 语法:SELECT FIRST(column_name) FROM table_name 注释:可使用 ORD ...

  9. mysql COUNT()函数 语法

    mysql COUNT()函数 语法 作用:返回匹配指定条件的行数.博智达直线电机平台 语法:SELECT COUNT(*) FROM table_name mysql COUNT()函数 示例 // ...

随机推荐

  1. Android使用Fragment打造万能页面切换框架

    首先我们来回顾一下传统用Activity进行的页面切换.activity之间切换.首先须要新建intent对象,给该对象设置一些必须的參数,然后调用startActivity方法进行页面跳转. 假设须 ...

  2. lua学习笔记(十三)

    math库     定义在math中     所有三角函数都使用弧度     指数和对数函数     取整函数     伪随机数math.random         调用时没有参数返回0~1之间的随 ...

  3. spring boot 使用拦截器 实现 用户登录拦截

    登录拦截和和权限拦截实现类似   首先自定义一个[DefineAdapter]类,这个类我是用来放自定义的配置(比如 自定义请求参数,自定义拦截器等),集成WebMvcConfigurerAdapte ...

  4. centos7设置ip

    centos7不能再通过setup命令来设置ip了,但可以通过修改网卡配置文件来设置ip 在/etc/sysconfig/network-scripts目录下找到网卡配置文件,修改之前内容如下 TYP ...

  5. Maven项目Update Project...后JRE System Library会自动变回1.5解决办法

    <build> <finalName>pay</finalName> <plugins> <plugin> <groupId>o ...

  6. 精通 Android Data Binding

    转自:https://github.com/LyndonChin/MasteringAndroidDataBinding 官方虽然已经给出了教程 - Data Binding Guide (中文版 - ...

  7. VS2019取消git源代码管理

    VS2019->工具->选项->源代码管理->插件管理 详见下图

  8. python 基础 9.5 数据库连接池

      一. 数据库连接池    python 编程中可以使用MySQLdb 进行数据库的连接及诸如查询,插入,更新等操作,但是每次连接mysql 数据库请求时,都是独立的去请求访问,相当浪费资源,而且访 ...

  9. thinkphp自动验证无效的问题

    新手入门thinkphp,试用自动验证表单输入数据功能,却发现怎么都不能调用自动验证,自动验证无效,原因竟是一个小细节的疏忽,学习一定要细心啊! Action方法: IndexAction下的adds ...

  10. A/B(逆元)

    A/B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...