MySQL---存储过程
存储过程的相关概念
是一组为了完成特定功能的sql语句的集合,类似于函数
写好了一个存储过程之后,我们可以像函数一样随时调用sql的集合。
复杂的,需要很多sql语句联合执行完成的任务
存储过程再执行上比sql语句的执行速度更快,效率也更高。
存储过程的优点
- 执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率。
- SQL语句加上控制语句的集合,灵活性高。
- 在服务器端存储,客户端调用时,降低网络负载。
- 可多次重复被调用,可随时修改,不影响客户端调用。
- 可完成所有的数据库操作,也可控制数据库的信息访问权限。
存储过程的管理
存储过程的创建过程:
##创建存储过程:DELIMITER $$ #将语句的结束符号从分号;临时改为两个$$ (可以是自定义)CREATE PROCEDURE Proc () #创建存储过程,过程名为Proc,不带参数-> BEGIN #过程体以关键字BEGIN开始-> select * from store_info; #过程体语句-> END $$ #过程体以关键字END结束DELIMITER; #将语句的结束符号恢复为分号
delimiter $$ #将语句的结束符号从分号临时改变成两个$$
create procedure proc () #创建存储过程proc:存储过程的名称。不能重复在当前库中唯一。括号里面不定义任何方法。
begin #过程体开始的关键字。begin后面跟上的是需要执行的sql语句。
end $$ #表示整个语句结束,和上面的定义开始符号一一对应。
delimiter; #将结束语句的分号恢复。
delimiter的作用就是保证整个存储过程中的sql语句能够被完整执行。
调用存储过程
格式: call 存储过程名称
call proc1;
查看存储过程
SHOW CREATE PROCEDURE [数据库.]存储过程名; #查看某个存储过程的具体信息SHOW CREATE PROCEDURE Proc;SHOW CREATE PROCEDURE Proc\G
show procedure status where db='kgc';
show procedure status like 'proc';
#查询当前库中有多少存储过程call proc;
#调用存储过程
drop procedure if exists proc;
#如果proc这个存储过程存在则删除
存储过程的使用
mysql> delimiter $$
mysql> create procedure proc2 ()-> begin-> insert into info2 values('小白','running','2002-7-11');-> select * from info2 ;-> delete from info2 where name='小刚';-> end $$
mysql> delimiter ;
mysql> call proc2;

给存储内容传参
存储过程中参数有三种运用的方式
- IN 输入参数: 表示调用者向过程传入值。(传入值可以是字面量或变量)
- OUT 输出参数: 表示过程向调用者传出值。(可以返回多个值)(传出值只能是变量)
- INOUT 输入输出参数: 既表示调用者向过程传入值,又表示过程向调用者传出值。(值只能是变量)
驶入参数
delimiter $$ //修改sql的结束语句标志$$
create procedure test1 (in uname char(20) ) //指定传参的变量位uname 后面为变量位的数据类型
begin
select * from info where name = uname; //以变量位where查询条件,进行查询
select * from info; //查看
end $$ //结束符
delimiter;call test1('郭琦');
#call 存储过程名(传参内容)#数据清晰和指定数据入库。分析数据行为。
传出参数
insert into info values(2,'郭琦',@num,'是');
#传出参数。调用存储过程内部的数据传出参数到info表中

输入和输出参数
delimiter $$
create procedure test3 (inout str varchar(10))
#定义了变量之后一定要定义数据类型是什么
BEGIN
select str;
#显示输入字符
set str = concat(str,'_ky32');
#让传入的字符串做一个拼接
select str;
#加工之后的字符串
end $$
delimiter;set @str='刘亚伟';
#先传参,在外部需要加上@
call test3(@str);update info set name=@str where id = 1;
#看一下加工后str的内容
in:先传入,定义变量的值,初始值 call test3 调用存储过程,把变量的值传入存储 @str=刘亚伟_ky32
存储过程中的控制语句
delimiter $$
create procedure test5 (inout num int)
BEGIN
if num >=10 then
set num=num-6;
else
set num=num*2;
end if;
#结束if语句的判断
select num;
end $$
delimiter;set @num=19;call test5(@num);update info set id = @num where score = 100;
调用多个参数
调用多个参数:范围的方式匹配,完成传参------写入表中
delimiter $$
create procedure test6 (inout score int,out grade varchar(15))
BEGIN
if score between 85 and 100 then
set grade = '优秀';
elseif score between 60 and 84 then
set grade = '一般';
else
set grade = '不及格';
end if;
select grade;
end $$
delimiter;set @score=90;call test6(@score,@grade);update info set score=@score,pass=@grade where id =1;
while:循环语句
delimiter $$
create procedure test7 (out rescult int)
BEGIN
declare a int;
declare i int;
#在过程体当中声明变量
set a=10;
set i=1;
while i<=10 do
set a=a+10;
set i=i+1;
#相当于i++
end while;
set rescult =a;
end $$
delimiter;set @rescult=90;call test7(@rescult);select @rescult;
注意点:在使用存储过程中,在内部变量不需要加@,外部使用和赋值要加@,引用变量,在存储过程begin之后声明变量。要用declare a int; declare i int; 声明变量要加数据类型。 要想使用存储过程里面的结果,必须要out才能传出参数。在声明存储变量时,要定义好参数的传参方式 in out inout
相关文章:
MySQL---存储过程
存储过程的相关概念 是一组为了完成特定功能的sql语句的集合,类似于函数 写好了一个存储过程之后,我们可以像函数一样随时调用sql的集合。 复杂的,需要很多sql语句联合执行完成的任务 存储过程再执行上比sql语句的执行速度更快,…...
宠物社区系统宠物领养小程序,宠物救助小程序系统多少钱?
当前很多的宠物被抛弃和虐杀,它们没有选择权,我们强制性的把狗带进人类的生活中,然后又无情的抛弃,让它们无家可归,变成流浪狗,它们做错了什么?流浪动物被主人遗弃之后居无定所,时刻…...
d3.js
D3:Data-Driven Documents • 通过D3提供的接口来基于数据操控文档的各个图元。 标题对于D3(本讲解)最为重要的标签,主要操作的对象(画布) HTML - 导入D3.js D3.js作为JavaScript的外库,必须先将其导入,如: Python的…...
okhttp关于header修改
在项目开发中,需要和后台定义一些规则,比如一些请求头信息,Content-Type,User-Agent。不能使用默认的,那么就得我们自己配置全局的。 基于okhttp4.0以上版本修改步骤: 创建我们自己的MediaType, create已经被废弃 val…...
pytorch代码实现注意力机制之Flatten Attention
Flatten Attention 介绍:最新注意力Flatten Attention:聚焦的线性注意力机制构建视觉 Transformer 在将 Transformer 模型应用于视觉任务时,自注意力机制 (Self-Attention) 的计算复杂度随序列长度的大小呈二次方关系,给视觉任务…...
激光雷达和人工智能
几十年来,激光雷达一直是许多行业中非常有用的工具,但直到最近,随着人工智能(AI)解决方案的引入,我们才开始认识到它的真正潜力。激光雷达,又称光探测和测距,是一种遥感技术。它利用…...
【算法练习Day44】最长递增子序列最长连续递增序列最长重复子数组
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 最长递增子序列最长连续递增…...
STM32H743XX/STM32H563XX芯片烧录一次后,再次上电无法烧录
近期在使用STM32H563ZIT6这款芯片在开发板上使用正常,烧录到自己打的板子就遇到了芯片烧录一次后,再次上电无法烧录的问题。 遇到问题需要从以下5点进行分析。 首先看下开发板的原理图 1.BOOT0需要拉高。 2.NRST脚在开发板上是悬空的。这里我建议大家…...
21. 合并两个有序链表 --力扣 --JAVA
题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 解题思路 判断特殊情况,如:两个列表中其中一个为空;创建一个初始节点用于返回;通过while循环来逐个遍历链表࿰…...
Linux 基本语句_10_进程
进程和程序的区别: 程序是一段静态的代码,是保存在非易失储存器上的制令和数据的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序的一次执行过程,包括了动态创建、调度、执行和消亡的整个过程…...
矩阵起源加入 OpenCloudOS 操作系统开源社区,完成技术兼容互认证
近日,超融合异构云原生数据库 MatrixOne企业版软件 V1.0 完成了与 OpenCloudOS 的相互兼容认证,测试期间,整体运行稳定,在功能、性能及兼容性方面表现良好。 一、产品简介 矩阵起源 MatrixOrigin 致力于建设开放的技术开源社区和…...
3D物理模拟和视觉特效软件SideFX Houdini mac中文介绍
SideFX Houdini for mac是一款3D物理模拟和视觉特效软件,几乎所有好莱坞特效电影里的物理模拟,包括碎裂,烟尘,碰撞,火焰,流体等模拟,都看得到它的身影。其独特的节点式操作方式,尤其…...
GPT-4.0网页平台-ChatYY
ChatYY的优势: 1. 支持大部分AI模型,且支持AI绘画: 2. 问答响应速度极快: 3. 代码解析: 4. 支持文档解读: 5. PC、移动端均支持: 访问直达:ChatYY.com...
mysql,redis导入导出数据库数据
mysql 导出数据 导出整个数据库: mysqldump -u 用户名 -p 数据库名 > 导出文件.sql 例如,如果你的用户名是 root,数据库名是 mydatabase,你可以运行以下命令: mysqldump -u root -p mydatabase > 导出文件.sql…...
conda修改虚拟环境名称
conda 修改虚拟环境名称 conda 不能直接更改名称,但是可以通过克隆环境解决 新建环境(克隆旧环境) conda create --name 新环境名 --clone 旧环境名 删除原环境 conda remove --name 旧环境名 --all 查看现有环境 conda env list conda i…...
c语言,将奇数和偶数分类
题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。 思路:像冒泡排序那样,相邻两个数比较,两个都是偶数则不…...
前端设计模式之【观察者模式】
文章目录 前言介绍实现优缺点应用场景后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端设计模式 🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误&#…...
HTTPS安全相关-通信安全的四个特性-ssl/tls
230-TLS是什么 1.http不安全 由于 HTTP 天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求 / 响应报文,数据不具有可信性 ; “代理服务”。它作为 HTTP 通信的中间人,在数据上下…...
并查集:Leetcode765 情侣牵手
n 对情侣坐在连续排列的 2n 个座位上,想要牵到对方的手。 人和座位由一个整数数组 row 表示,其中 row[i] 是坐在第 i 个座位上的人的 ID。情侣们按顺序编号,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后…...
如何设计一个网盘系统的架构
1. 概述 现代生活中已经离不开网盘,比如百度网盘。在使用网盘的过程中,有没有想过它是如何工作的?在本文中,我们将讨论如何设计像百度网盘这样的系统的基础架构。 2. 系统需求 2.1. 功能性需求 用户能够上传照片/文件。用户能…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...


