mysql之存储过程

目录

一、mysql之存储过程的相关知识

1)存储过程的概念

2)存储过程的优点

二、存储过程的管理

1)创建存储过程

基本格式: 

2)调用存储过程

格式: call 存储过程名称 

 3)查看存储过程

查看全库的存储过程 : 

4)存储过程的修改和删除

5)存储过程的正常使用

三、存储过程的参数运用 

1)传入参数的存储过程 

创建传参的存储过程 :

注意:变量名不能含有下划线

调用传参的存储过程 : 

2) 传出参数的存储过程(out)

执行结果: 

3)输入输出参数(inout)  

执行结果: 

四、存储过程的控制语句

1)if条件判断语句

执行结果:

2)while循环条件语句

注意:

执行结果: 


一、mysql之存储过程的相关知识

1)存储过程的概念

存储过程是一组为了完成特定功能的SQL语句集合。类似于于其他编程语言中的函数,定义一个函数方法,可以随时起到传参调用的功能

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

2)存储过程的优点

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

二、存储过程的管理

1)创建存储过程

基本格式: 

 ##创建存储过程:DELIMITER $$                  #将语句的结束符号从分号;临时改为两个$$ (可以是自定义)CREATE PROCEDURE Proc ()      #创建存储过程,过程名为Proc,不带参数-> BEGIN                      #过程体以关键字BEGIN开始-> select * from store_info;  #过程体语句-> END $$                     #过程体以关键字END结束​DELIMITER;                    #将语句的结束符号恢复为分号

2)调用存储过程

格式: call 存储过程名称 

call proc1;

 3)查看存储过程

 SHOW CREATE PROCEDURE [数据库.]存储过程名;  #查看某个存储过程的具体信息​SHOW CREATE PROCEDURE Proc;SHOW CREATE PROCEDURE Proc\G

查看全库的存储过程 : 

show  procedure status  like '%proc%';
show  procedure status  like '%proc%'\G;

4)存储过程的修改和删除

 #存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。DROP PROCEDURE IF EXISTS 存储过程名;#仅当存在时删除,不添加If EXISTS 时,如果指定的过程不存在,则产生一个错误。

5)存储过程的正常使用

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 输入输出参数: 既表示调用者向过程传入值,又表示过程向调用者传出值。(值只能是变量)

1)传入参数的存储过程 

创建传参的存储过程 :

mysql> delimiter $$
mysql> create procedure proc3 (in uname char(20))-> begin-> select * from student where name=uname;-> delete from student where name=uname;-> select * from student;-> end $$mysql> delimiter ;

注意:变量名不能含有下划线

调用传参的存储过程 : 

 call proc3 ('张三');

2) 传出参数的存储过程(out)

只接受变量的调用,不接受直接传入的值

mysql> delimiter $$
mysql> create procedure test(out num int)-> begin-> set num=100;-> end $$mysql> delimiter ;

执行结果: 

3)输入输出参数(inout)  

mysql> create procedure proc5 (inout a int)  -> begin-> select a;-> set a=a+10;-> select a;-> end $$delimiter ;

执行结果: 

四、存储过程的控制语句

1)if条件判断语句

mysql> delimiter $$
mysql> create procedure test2(in num int)-> begin-> if num >=10 then-> set num=num-5;-> else -> set num=num*2;-> end if;-> select num;-> end $$mysql> delimiter ;

执行结果:

2)while循环条件语句

注意:

decalre -i var 声明变量var为整数型( 即增加整型属性)

decalre +i var 删除变量var的整型属性

mysql> delimiter $$                                                                                                       
mysql> create procedure test3 ()-> 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;-> end while ;-> select a;-> end $$mysql> delimiter ;

执行结果: 

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

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

相关文章

TVS二极管失效分析

摘要&#xff1a;常用电路保护器件的主要失效模式为短路&#xff0c;瞬变电压抑制器(TvS)亦不例外。TvS 一旦发生短路失效&#xff0c;释放出的高能量常常会将保护的电子设备损坏&#xff0e;这是 TvS 生产厂家和使用方都想极力减少或避免的情况。通过对 TVS 筛选和使用短路失效…

【MFC】11.MFC文档和单文档架构-笔记

MFC文档 之前我们在写字符雨的时候&#xff0c;将数据都存储到了视图类中&#xff0c;这是不合理的&#xff0c;视图类只负责显示&#xff0c;不应该存储任何数据 文档&#xff1a;专门存储数据用的 CDocument 文档与视图的关系&#xff1a; 创建一个文档类 单文档四个类都…

浅谈JavaScript编程过程function函数的几种编程风格

作者来源&#xff1a;https://ost.51cto.com/user/posts/16066420 声明 JavaScript编程过程中函数是一个很有趣的点&#xff0c;JavaScript的函数与其他如:C、Java等语言有很大区别。对于从别的编程语言转来的同学可能会存在一定的“坑”&#xff0c;如function函数与>函数…

vue3 vite gzip

1、首先前端项目里安装 vite-plugin-compression 插件 yarn add vite-plugin-compression 2、在 vite.config.js 中 import vue from vitejs/plugin-vue import { defineConfig } from vite import compressPlugin from vite-plugin-compressionexport default defineConf…

C语言 指针的运算

目录 一、介绍 二、指针 整数 、指针 - 整数 二、指针 - 指针 四、指针的关系运算 一、介绍 在C语言中&#xff0c;指针的运算分为三类 1、指针 整数 、指针 - 整数2、指针 - 指针3、指针的关系运算 二、指针 整数 、指针 - 整数 因为数组在…

桂林小程序https证书

现在很多APP都相继推出了小程序&#xff0c;比如微信小程序、百度小程序等&#xff0c;这些小程序的功能也越来越复杂&#xff0c;不可避免的和网站一样会传输数据&#xff0c;因此小程序想要上线就要保证信息传输的安全性&#xff0c;也就是说各种类型的小程序也需要部署https…

第一次PR经历

第一次PR测试地址&#xff1a;https://github.com/firstcontributions/first-contributions说明文档&#xff1a; https://github.com/firstcontributions/first-contributions/blob/main/translations/README.zh-cn.md

【2023 华数杯全国大学生数学建模竞赛】 B题 不透明制品最优配色方案设计 39页论文及python代码

【2023 华数杯全国大学生数学建模竞赛】 B题 不透明制品最优配色方案设计 39页论文及python代码 1 题目 B 题 不透明制品最优配色方案设计 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明制品的配色对其外观美观度和市场竞争力起着重要作用。…

802.11K/V/R协议介绍

802.11K/V/R协议介绍 1.传统无线漫游介绍 1.1 什么是无线漫游 一台无线终端备&#xff08;STA&#xff09;通过连接Wi-Fi获取上网体验&#xff0c;Wi-Fi名称&#xff08;又称为SSID&#xff09;是由无线接入网&#xff08;AP&#xff09;提供的&#xff0c;因为一台AP设备的覆…

idea如何开启远程调试

一&#xff1a;打包需要部署的jar包上传到服务器 二&#xff1a;服务器&#xff08;开启远程调试接口&#xff09; nohup java -jar -Xdebug -Xrunjdwp:transportdt_socket,servery,suspendn,address8453 xxx.jar > xxx.log 2>&1 & 三&#xff1a; idea配置rem…

web 3d场景构建+three.js+室内围墙,仓库,楼梯,货架模型等,第一人称进入场景案例

翻到了之前的一个案例&#xff0c;基于three.js做的仓库布局模拟&#xff0c;地图元素除了大模型外&#xff0c;其他都是通过JSON数据解析动态生成的&#xff0c;例如墙体&#xff0c;柱子门口&#xff0c;地标等&#xff0c;集成了第一人称的插件可以第一人称进入场景有需要的…

pytorch入门-TensorBoard和Transforms

TensorBoard from PIL import Image from torch.utils.tensorboard import SummaryWriter from torchvision import transforms# python的用法 -》 tensor数据类型 # 通过transforms.ToTensor 去解决两个问题 # 1. transforms该如何使用&#xff08;python&#xff09; # 2. …

vue手写多对多关联图,连线用leader-line

效果如图 鼠标滑动效果 关联性效果 <template ><div class"main" ref"predecessor"><div class"search"><div class"search-item"><div class"search-item-label">部门</div><Trees…

10种常见网站安全攻击手段及防御方法

随着互联网技术的发展&#xff0c;网站所遭受的网络攻击频率也在不断上升。某种程度上&#xff0c;我们可以说互联网上的每个网站都容易遭受安全攻击。因为网络攻击者最主要的动机是求财。无论你运营的是电子商务项目还是简单的小型商业网站&#xff0c;潜在攻击的风险就在那里…

数据结构顺序表

今天主要讲解顺序表&#xff0c;实现顺序表的尾插&#xff0c;头插&#xff0c;头删&#xff0c;还有尾删等操作&#xff0c;和我们之前写的通讯录的增删查改有类似的功能。接下来让我们开始我们的学习吧。 1.线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特…

04-1_Qt 5.9 C++开发指南_常用界面设计组件_字符串QString

本章主要介绍Qt中的常用界面设计组件&#xff0c;因为更多的是涉及如何使用&#xff0c;因此会强调使用&#xff0c;也就是更多针对实例&#xff0c;而对于一些细节问题&#xff0c;需要参考《Qt5.9 c开发指南》进行学习。 文章目录 1. 字符串与普通转换、进制转换1.1 可视化U…

【Tomcat】Tomcat部署及优化

Tomcat 它是一个免费、开源的web应用服务器&#xff1b;基于java代码开发的软件&#xff1b;处理动态请求和基于Java代码的页面开发&#xff1b; 可以在html当中写入Java代码&#xff0c;Tomcat可以解析html页面当中的Java代码&#xff0c;执行动态请求以及动态页面 缺点&#…

【hello C++】类型转换

一、C语言中的类型转换 在 C 语言中&#xff0c;如果 赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返回值 类型与 接收返回值类型不一致时&#xff0c;就需要发生类型转化 &#xff0c; C 语言中总共有两种形式的类型转 换&#xff1a;&am…

springboot文件上传和下载接口的简单思路

springboot文件上传和下载的简单思路 文件上传文件下载 文件上传 在springboot中&#xff0c;上传文件只需要在接口中通过 MultipartFile 对象来获取前端传递的数据&#xff0c;然后将数据存储&#xff0c;并且返回一个对外访问路径即可。一般对于上传文件的文件名&#xff0c…

多用户微商城多端智慧生态电商系统搭建

多用户微商城多端智慧生态电商系统的搭建步骤如下&#xff1a; 系统规划&#xff1a;在搭建多用户微商城多端智慧生态电商系统之前&#xff0c;需要进行系统规划。包括确定系统的目标、功能、架构、技术选型、开发流程等方面。市场调研&#xff1a;进行市场调研&#xff0c;了…