暂无图片
MySQL的存储过程与函数的联系与区别是怎样的?
我来答
分享
2023-07-02
MySQL的存储过程与函数的联系与区别是怎样的?

MySQL的存储过程与函数的联系与区别是怎样的?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
北斗

存储过程是用户定义的一系列SQL语句的集合,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。函数是为其他程序服务的,需要在其他语句中调用函数才可以,而存储过程不能被其他语句调用,是自己通过CALL语句来执行的。存储过程和函数都是属于某个数据库的。

存储过程与函数的区别主要在于以下几个方面:

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

2)参数不同。存储过程的参数可以有IN、OUT、INOUT三种类型,而函数只能有IN一种类型。

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

4)存储过程可能使用非确定函数,而函数不允许在主体中内置非确定函数。

5)调用方式不同。SQL语句中不可以使用存储过程,存储过程只能通过CALL语句进行调用,但函数是嵌入在SQL中使用的,它可以作为SELECT查询语句的一部分来调用,就像内建函数一样,例如AVG()、SUN()。

暂无图片 评论
暂无图片 有用 4
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
MySQL server-id 为什么不生效?
回答 7
已采纳
serverid值有最大限制,你这个配置超过最大值了,把serverid调小吧。。。。
MySQL数据库创建索引的注意事项是什么?
回答 1
已采纳
索引的注意事项主要包括以下几点:1)不在低基数列上创建索引。2)不在索引列进行数学运算和函数运算,因为对索引字段执行函数操作可能会导致无法使用索引。3)索引不宜过多,单表索引过多不仅占空间,还会影响数
查找未被使用的索引
回答 1
MySQL5.7及以上版本提供直接查询冗余索引、重复索引和未使用过索引的视图,直接查询即可。查询冗余索引、重复索引selectfromsys.schemaredundantindexes;查询未使用过
ogg能同步函数吗
回答 1
支持function下面摘自OGG19.1官方文档,其他版本具体支持情况也可以参考各个版本官方文档:https://docs.oracle.com/en/middleware/goldengate/c
执行了analyze更新统计信息后,如何确认我收集的时间呢?那个系统表的那个字段来记录?
回答 1
INFORMATIONSCHEMA.STATISTICS的UPDATETIME
在navicat执行sql的耗时为什么显示两个时间?
回答 2
有时第二个时间比第一个时间大很多,是为什么呢?
mysql有随机生成函数吗?
回答 3
已采纳
RAND()随机生成01的随机数mysql>selectRAND(),RAND(3),RAND(0),RAND(2);|RAND()|RAND(3)|RAND(0)|RAND(2)||0.102
mysql SELECT BINARY 无法变为二进制结果
回答 4
跟mysql客户端版本和参数有关的,5.7需要指定参数:binaryashex8.0不需要指定
mysql数据库复杂sql优化问题
回答 3
如果是核心查询业务,且使用频繁,还是建议打破范式。将明细表增加冗余列,比如你的model1,projectcode,NAME总之,最终你的这个业务,只需要fslorderbaseline这个表就足够了
在php-fpm环境中,为什么不建议使用mysql长连接,而却允许redis长连接?
回答 1
是否使用长连接还是看实际情况。phpfpm模式下最大的问题是进程常驻,开启长连接就会每个进程建立一个连接。一台机器上如果是500个fpm进程,就会有500个连接。当集群中机器达到几十台时,mysql链