暂无图片
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主从问题
回答 2
如果是传统复制,看position和file名字如果是gtid,看执行到的事物号
MySQL 数据库经常cpu跑满,是什么问题?
回答 4
sql并发量大,并且执行时间长,会把CPU资源占用完。
mysql rr下,未提交的插入数据,data_locks表中,LOCK_DATA: NULL的问题
回答 1
这是插入意向锁,是表锁,设计如此,为了提高插入的并发性;你重新开一个会话,再插入相同的记录,这时会被阻塞,然后再查看datalocks视图,就明白了
MySQL 60G的“大表”,怎么对其创备份表 a -> a_bak?
回答 4
已采纳
可以用mysqldumpmysqldumphIPP端口u用户p密码库名表名>/路径/表名.{$date}.bak
mysql5.7哪个版本比较稳定?
回答 1
用8.x版本吧。
shell编程与数据库事务交互的问题
回答 1
已采纳
那只能你shell中有设计成有的地方等待用户输入的模式比如plsql中就有&这样的等待输入
如何在 SQL Server 中将多行中的文本连接成单个文本字符串?
回答 1
已采纳
SQLServer2017新增了stringagg函数,可以轻松实现分组合并字符串,而不是用xmlpath,或者写个自定义函数来实现。语法:STRINGAGG(expression,separator
MySQL 有没有办法清理global status下的数据?
回答 1
5.7之后,globalstatus读的是performanceschema.globalstatus这个表的数据
mysql innodb cluster对server、shell、router版本有要求吗
回答 1
server和router版本一致就行(router8.0.3之后与server一致,2.1.x分支被8.0.x取代);shell版本时间晚于server和router就行,一般shell就用较新版本
安装MySQL需要安装什么版本的gcc?
回答 3
别用编译的,我这种老鸟用编译的都好入坑,rpm和yum的太简单了,还是用编译好的,还能学点东西。