当前位置:网站首页>MySQL-存储过程-函数-
MySQL-存储过程-函数-
2022-08-03 08:36:00 【LXMXHJ】
存储过程
概述
概念
存储过程和函数定义:
类似于java中的方法。
一组预先编写好的SQL语句的集合,理解成批处理语句。好处:
提高代码的重用性;简化操作;减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
创建
语法
create procedure 存储过程名(参数列表)
begin
存储过程体(一组合法有效的SQL语句)
end
注意
- 参数列表包含三部分
参数模式 参数名 参数类型
案例:
in stuname varchar(20);
- 参数模式:
| 模式 | 说明 |
|---|---|
| in | 该参数可以作为输入,也就是该参数需要传入值(其中in可以省略) |
| out | 该参数可以作为输出,也就是该参数可以作为返回值 |
| inout | 该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值。 |
- 如果存储过程体仅仅只有一句话,begin end可以省略
- 存储过程体中的每条SQL语句的结尾要求必须加分号,存储过程的结尾可以使用delimiter重新设置
delimiter 结束标记
delimiter $
调用
语法
call 存储过程名(实参列表);
举例说明
# 调用in模式的参数
call sp1('值');
# 调用out模式的参数
set @name;
call sp1(@name);
select @name;
# 调用inout模式的参数
set @name = 值;
call sp1(@name);
select @name;
案例
- 参数列表为空

- 创建带in模式参数的存储过程

- 创建带有out模式参数的存储过程

- 创建带有inout参数的存储过程

删除
语法
drop procedure 存储过程名;
案例:只支持删除一个
查看
语法
show create procedure 存储过程名;
案例






函数
概述
定义
一组预先编译好的SQL语句的集合,理解成批处理语句。
好处
提高代码的重用性。
简化操作。
减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。
存储过程与函数区别
| 区别 | 存储过程 | 函数 |
|---|---|---|
| 返回值 | 个数可以是0个或者多个 | 有且仅有一个 |
| 操作 | 适合批量插入、批量更新 | 适合做处理后返回一个结果 |
创建
语法
create function 函数名(参数名 参数类型) returns 返回类型
begin
函数体
end
注意
- 参数列表—包含两部分:参数名、参数类型
- 函数体—肯定有return语句,如果没有写会报错
如果return语句没有放在函数体的最后也不报错,但不建议 - 函数体仅有一句话,则可以省略begin end
- 使用delimiter语句设置结束标记
调用
语法
select 函数名(参数列表);
查看
语法
show create function 函数名;
删除
语法
drop function 函数名;
案例




边栏推荐
猜你喜欢

mysql服务器上的mysql这个实例中表的介绍

How does Mysql query two data tables for the same fields in two tables at the same time

Scala parallel collections, parallel concurrency, thread safety issues, ThreadLocal

HCIP练习02(OSPF)

AI mid-stage sequence labeling task: three data set construction process records

dflow入门2——Slices

Batch PNG format can be converted to JPG format

LINGO 18.0软件安装包下载及安装教程

【TPC-DS】25张表的详细介绍,SQL的查询特征

开发工具之版本控制
随机推荐
dflow入门1——HelloWorld!
BOM系列之localStorage
牛客 - 鼠标的天选(字符串哈希)
Unity编辑器扩展批量修改图片名称
判断根节点是否等于子节点之和
ArcEngine(五)用ICommand接口实现放大缩小
What are pseudo-classes and pseudo-elements?The difference between pseudo-classes and pseudo-elements
frp:开源内网穿透工具
dflow入门3——dpdispatcher插件
vim 折叠函数
mysql服务器上的mysql这个实例中表的介绍
“==”和equals的区别
word之个人设置
积分商城系统设计
国内IT市场还有发展吗?有哪些创新好用的IT运维工具可以推荐?
【微信小程序】底部有安全距离,适配iphone X等机型的解决方案
RViz报错: Error subscribing: Unable to load plugin for transport ‘compressed‘解决方法
【无标题】
swiper分类菜单双层效果demo(整理)
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二:编码实现