当前位置:网站首页>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 函数名;
案例
边栏推荐
- ArcEngine(三)通过MapControl控件实现放大缩小全图漫游
- RViz报错: Error subscribing: Unable to load plugin for transport ‘compressed‘解决方法
- 浅析什么是伪类和伪元素?伪类和伪元素的区别解析
- dflow入门5——Big step & Big parameter
- Add Modulo 10 (规律循环节,代码实现细节)
- HCIP实验(06)
- 内存模型之有序性
- 分析型数据库性能测试总结
- Eject stubborn hard drives with diskpart's offline command
- LeetCode 每日一题——622. 设计循环队列
猜你喜欢
AI中台序列标注任务:三个数据集构造过程记录
【无标题】
Scala parallel collections, parallel concurrency, thread safety issues, ThreadLocal
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二:编码实现
数仓4.0(一)
110道 MySQL面试题及答案 (持续更新)
进程的创建
LINGO 18.0软件安装包下载及安装教程
【TPC-DS】25张表的详细介绍,SQL的查询特征
Batch PNG format can be converted to JPG format
随机推荐
How does Mysql query two data tables for the same fields in two tables at the same time
redis键值出现 xacxedx00x05tx00&的解决方法
BOM系列之localStorage
ceph简介
swiper分类菜单双层效果demo(整理)
Transformer、BERT、GPT 论文精读笔记
sqlite 日期字段加一天
LeetCode 每日一题——622. 设计循环队列
0day_Topsec上网行为管理RCE
ArcEngine (2) loading the map document
【无标题】
10分钟带你入门chrome(谷歌)浏览器插件开发
Charles抓包工具学习记录
关于Unity,Laya学习,第一步加载Unity加载场景
netstat 及 ifconfig 是如何工作的。
浅析什么是伪类和伪元素?伪类和伪元素的区别解析
Using pipreqs export requirements needed for the project. TXT (rather than the whole environment)
流行和声基础大笔记
审批流设计
SQL每日一练(牛客新题库)——第5天:高级查询