MySQL存储过程和函数

在MySQL数据库中,存储程序可以分为存储过程和存储函数,用于简化开发人员开发应用程序的工作量,而且对于存储过程和函数中SQL语句的变动,无需修改上层应用程序的代码。

存储过程和存储函数都是一系列SQL语句的集合,它们被封装之后保存到数据库中。

应用程序调用存储过程只需要通过CALL关键字并指定存储过程的名字和参数即可;
应用程序调用存储函数只需要通过SELECT关键字并指定存储函数的名称和参数即可。

存储过程和存储函数的区别:

1.存储过程可以有多个或者没有返回值,存储函数则有且只有一个返回值;

2.存储过程的参数类型可以是IN、OUT和NOUT,存储函数的参数类型只能是IN;

IN:代表输入参数,需要由调用者传递实际参数,默认;

OUT:代表输出参数,该参数可作为返回值;

INOUT:代表既可以作为输入参数,也可以作为输出参数。

3.存储过程中的语句功能更强大,可以实现很复杂的业务逻辑,而函数有很多限制,比如不能在函数中使用INSERT,UPDATE,DELETE,CREATE等语句;

4.存储函数实现的功能性强;

5.存储过程可以调用存储函数,但是函数不能调用存储过程;

6.存储过程是一个比较独立的部分,而函数则可以作为查询语句的一个部分来调用。

存储过程:

创建存储过程:

DELIMITER关键字:用来声明sql语句的分隔符,告诉MySQL该命令已经结束

SQL语句默认的分隔符是分号,但是有时候我们需要一条功能SQL语句中包含分号,但是并不作为结束标识,这时候就可以使用DELIMITER来指定分割符号。

# 修改分隔符为$

DELIMITER $

#标准语法

CREATE PROCEDURE 存储过程名称([IN|OUT|INOUT] 参数名 数据类型)

BEGIN

        sql语句;

END$

#修改分隔符为分号

DELIMITER ;

#调用存储过程

CALL 存储过程名称(实际参数);

#删除存储过程

DROP PROCEDURE [IF EXISTS] 存储过程名称;

DECLARE 变量名 数据类型 [DEFAULT 默认值];

DECLARE定义的是局部变量,只能用在BEGIN END范围之内

存储函数:

CREATE FUNCTION func_name([param_name type[……]])# func_name是存储函数的名称,param_name type指定存储函数的参数,type参数用于指定存储函数的参数类型,该类型可以是MySQL数据库中所有支持的类型。

RETURNS TYPE#指定返回值的类型

[CHARACTERISTIC ...]#指定存储函数的特性

BEGIN

        routine_body#SQL代码内容

        RETURN 结果;

END;

调用存储函数:

SELECT func_name();

删除存储函数:

DROP FUNCTION 函数名称;

例子:

DELIMITER $

CREATE FUNCTION func1()#获取学生表中成绩大于95分的学生数量

RETURNS int

BEGIN

       DECLARE result INT;

        SELECT COUNT(*) INTO result FROM student WHERE score>95;

        RETURN result;

END$

DELIMITER ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值