MySQL中存储过程与函数理解

Mysql存储过程和函数区别

1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。

2)对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类~~存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。

3)存储过程,可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。

4)存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。

存储过程实战

首先我建一个名为ceshi_3的表(效果为下图):
在这里插入图片描述
存储过程【create procedure】
在这里插入图片描述
咱们详细的看一下上边这个图:
首先是 delimiter //它与存储过程语法无关。 delimiter语句将标准分隔符 - 分号(;)更改为://。 在这种情况下,分隔符从分号(;)更改为双斜杠//。为什么我们必须更改分隔符? 因为我们想将存储过程作为整体传递给服务器,而不是让mysql工具一次解释每个语句。 在END关键字之后,使用分隔符//来指示存储过程的结束。 最后一个命令(delimiter;)将分隔符更改回分号(;)

使用create procedure语句创建一个新的存储过程。在create procedure语句之后指定存储过程的名称。在这个示例中,存储过程的名称为:store,并把括号放在存储过程的名字之后。

BEGIN和END之间的部分称为存储过程的主体。将声明性SQL语句放在主体中以处理业务逻辑。 在这个存储过程中,我们使用一个简单的select查询来查询products表中的数据。

咱们都知道图中select 语句可以实现name列中物理这一条,这么做其实就是单单把这一结果存储起来了。

再来具体调用store()这个存储过程
用 call store; ——(这里的store是上边所创建的存储过程名字)
在这里插入图片描述

函数实战

还是这个图:
在这里插入图片描述
现在我用函数来实现效果
创建存储函数,名称为 store,该函数返回select 语句的查询结果,数值类型为字符串类型,输入的 SQL 语句和执行结果如下所示。
在这里插入图片描述
效果:
在这里插入图片描述

至于删除存储结构和函数还用说吗,哈哈毕竟删除永远比创建简单

还是说一下吧!

删除存储结构
drop procedure +存储结构名+
删除函数
drop function +函数名+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值