MySQL存储过程

news2024/10/1 12:22:28

目录

存储过程 

1、存储过程的概念

2、存储过程的优点

3、创建存储过程

格式:

4、调用存储过程

格式

 5、查看存储过程

格式:

 6、存储过程的参数

 7、删除存储过程

格式:

8、存储过程的控制语句

准备a表

 (1)条件语句if--then--else--end if

 (2)循环语句while ···· end while


存储过程 

1、存储过程的概念

  • 存储过程是一组为了完成特定功能的SQL语句集合。
  • 存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。存储过程在执行上比传统SQL速度更快、执行效率更高。

2、存储过程的优点

  • 执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
  • SQL语句加上控制语句的集合,灵活性高
  • 在服务器端存储,客户端调用时,降低网络负载
  • 可多次重复被调用,可随时修改,不影响客户端调用
  • 可完成所有的数据库操作,也可控制数据库的信息访问权限

3、创建存储过程

格式:

格式:
delimiter $$
create procedure xxx()
 begin
   sql语句;
 end $$
delimiter ;

delimiter $$        #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
create procedure xxx()         #创建存储过程,过程名为xxx,不带参数
begin         #过程体以关键字 BEGIN 开始
sql语句;         #过程体语句
end $$         #过程体以关键字 END 结束
delimiter ; #将语句的结束符号恢复为分号

例:


delimiter $$        #改变结束符号,由“;”改为“$$”,也可以自己定义
create procedure cha_info()创建存储过程,名字为cha_info
begin        #以关键字begin开始
select * from info;        #sql语句
end $$        #以关键字end结束,加上命令结束符$$
delimiter ;        #将结束符号改为“;”,“;”前有空格

4、调用存储过程

格式

call 过程名;
例:
call cha_info;

 5、查看存储过程

格式:

show create procedure [数据库.]存储过程名;

show procedure status like '%cha_info'\G
#能够查看创建存储过程的状态、时间等信息,却看不了创建的具体命令

 6、存储过程的参数

  • in 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
  • out 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
  • inout 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

Tip:创建时如果有输入参数,调用存储过程后面一定要带参数,否则会在使用时报错。

 7、删除存储过程

存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。

格式:

drop procedure 过程名;
drop procedure if exists 过程名;

 Tip:使用if exists是先判断要删除的存储过程是否存在,如果直接删除,会报错提示过程不存在

8、存储过程的控制语句

准备a表

create table t (id int);
insert into t values(10);

 (1)条件语句if--then--else--end if

delimiter $$
create procedure test2(in shu int)
begin
declare var int;
set var=shu*2;
if var>=10 then
update a set id=id+1;
else
update a set id=id-1;
end if;
end $$
 
delimiter ;

call test2(6);

 (2)循环语句while ···· end while

delimiter $$
create procedure test3()
 begin
 declare var int;
 set var=0;
 while var<6 do
 insert into a values(var);
 set var=var+1;
 end while;
 end $$
 
delimiter ;

call test3;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring基础篇:注入

第一章&#xff1a;注入 一&#xff1a;什么是注入 &#xff08;Injection&#xff09;注入就是通过Spring的工厂类和spring的配置文件&#xff0c;对spring所创建的对象进行赋值&#xff0c;为成员变量进行赋值 二&#xff1a;为什么注入 为什么需要Spring工厂创建对象的时…

[附源码]Python计算机毕业设计SSM开放式在线课程教学与辅助平台(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计JAVA校园闲置物品租赁系统

[附源码]计算机毕业设计JAVA校园闲置物品租赁系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

Maven使用指南(超详细)

Maven高级 目标 理解并实现分模块开发能够使用聚合工程快速构建项目能够使用继承简化项目配置能够根据需求配置生成、开发、测试环境&#xff0c;并在各个环境间切换运行了解Maven的私服 1&#xff0c;分模块开发 1.1 分模块开发设计 (1)按照功能拆分 我们现在的项目都是在…

Delay Penalty for RNN-T and CTC

1. 背景 之前介绍了如何在 RNN-T 流式模型上应用时延正则&#xff0c;以及在 Conformer 和 LSTM 上的实验结果。 本期公众号重点带大家回顾下具体的思路&#xff0c;以及如何类似地在 CTC 流式模型上应用时延正则。 有些内容可能有所重复&#xff0c;读者可适当跳过。2. Dela…

iwebsec靶场 SQL注入漏洞通关笔记12-等价函数替换绕过

系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入&#xff08;宽字节注入&#xff09;_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入&#xff08;布尔型盲注&#…

Ajax学习:同源策略(与跨域相关)ajax默认遵循同源策略

同源策略&#xff1a;是浏览器的一种安全策略 同源意味着&#xff1a;协议、域名、端口号必须相同 违背同源便是跨域 当前网页的url和ajax请求的目标资源的url必须协议、域名、端口号必须相同 比如&#xff1a;当前网页&#xff1a;协议http 域名 a.com 端口号8000 目标请求…

python——spark入门

Hadoop是对大数据集进行分布式计算的标准工具&#xff0c;这也是为什么当你穿过机场时能看到”大数据(Big Data)”广告的原因。它已经成为大数据的操作系统&#xff0c;提供了包括工具和技巧在内的丰富生态系统&#xff0c;允许使用相对便宜的商业硬件集群进行超级计算机级别的…

Android Poco初始化时,不大起眼但可能存在坑点的参数们

1. 前言 进行Android poco初始化的时候&#xff0c;可能大多数同学都是直接在Poco辅助窗里选择Android模式&#xff0c;然后选择自动帮我们补充poco的初始化脚本&#xff1a; 这种情况下&#xff0c;我们大多数都不会关注初始化的参数。但如果我们不了解这些参数的含义&#x…

Spring之@RequestMapping、@GetMapping、 @PostMapping 三者的区别

我的理解&#xff1a;其实RequestMapping、GetMapping、 PostMapping 三者就是父类和子类的区别&#xff0c;RequestMapping是父类&#xff0c;GetMapping、 PostMapping为子类集成了RequestMapping更明确了http请求的类型 分析三者的源码&#xff1a; RequestMapping .class&…

C#教务管理大数据平台系统源码

校务管理系统是专门针对幼儿园、培训学校的业务应用而设计研发的一款行业应用软件。校管家校务管理系统融入先进的协同管理理念&#xff0c;运用领先的信息化、网络化处理技术&#xff0c;结合丰富的教育培训行业经验&#xff0c;切实有效的解决幼儿园、培训学校日常工作中的关…

[附源码]计算机毕业设计-菜篮子系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

KVM虚机添加磁盘

KVM虚拟机添加磁盘两种方法&#xff1a; 1、添加虚拟磁盘文件 2、添加物理磁盘 需求 1、/kvm/kvms目录是我们KVM磁盘镜像集中管理的位置&#xff0c;我们需要在/kvm/kvms下给ceph1虚拟机创建名为ceph1-vdb.qcow2的磁盘文件&#xff0c;大小为80G&#xff0c;作为ceph1的vdb磁盘…

Python和labview先学哪个

前言 在这之前&#xff0c;先跟大家分享个身边的故事。 大学同学小宏&#xff0c;在北京一家电子设备公司做运维&#xff0c;上周四刚被升为运维部经理&#xff0c;薪资涨了35%。 但你一定想不到&#xff0c;他平时从不加班&#xff0c;甚至还经常迟到。 &#xff08;文末送…

Qt入门总结

文章目录Qt一、各文件基本概念1、main.cpp文件2、XXX.pro文件3、XXX.h文件二、基本知识1、命名规范2、快捷键三、入门操作1、添加按钮2、重置窗口大小3、设置窗口标题4、设置固定的窗口大小5、对象树6、添加源文件/头文件7、窗口坐标系四、信号与槽1、让按钮附带功能2、自定义信…

浅谈affine_trans_point_2d与affine_trans_pixel

先看下两个坐标图谱&#xff1a; 变换前&#xff1a; 变换后&#xff1a; 我们根据1号点和9号点前后的关系&#xff0c;计算变换后其他点的坐标&#xff1a;这其实就是根据MARK点进行定位的原理 halcon代码&#xff1a; 执行结果&#xff1a; 我们发现&#xff0c;两种变换方…

湘江新区:金融活水赋能实体经济

湘江早报全媒体记者 黄荣佳 通讯员 易芳 吴硕 4月26日&#xff0c;艾布鲁环保在创业板首发上市&#xff1b; 10月28日&#xff0c;“国产操作系统第一股&#xff02;麒麟信安敲响上市钟声&#xff0c;成为今年全省第一家在科创板上市的公司&#xff1b; 11月24日&#xff0c;…

临床信息去冗余 临床数据处理分组不同的GSE数据集有不同的临床信息,不同的分组技巧

最近&#xff0c;我发现学徒在学习GEO数据挖掘的过程中&#xff0c;遇到了第一个也是至关重要的一个难题就是对下载后的数据集进行合适的分组&#xff0c;因为只有对样本进行合适的分组&#xff0c;才有可能得到我们想要的信息。但是不同的GSE数据集有不同的临床信息&#xff0…

SpringCloud全系列知识(4)——统一网关Gateway

统一网关Gateway 一 认识网关 1.网关的功能 1.身份认证和权限校验 2.服务路由&#xff0c;负载均衡 3.请求限流 2.技术实现 Gatewayzuul 二 Gateway的使用 1.搭建网关服务 1.创建新的Module,引入 Gateway 和 Nacos 服务发现依赖。 <!--nacos服务发现依赖-->…

天宇优配|研判明年下半年投资机会或更大 险资看好“安全”与“发展”

上海证券报记者昨日获悉&#xff0c;多家稳妥资管公司已经拟定2023年出资战略&#xff0c;跟着本年以来多项稳经济方针逐步落地&#xff0c;险资遍及看好下一年经济复苏带来的商场出资时机。 权益出资方面&#xff0c;险资以为&#xff0c;当时股票商场估值处于前史较低水平&am…