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.rhkb.cn/news/82136.html

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

相关文章

在windows中使用parLapply函数执行并行计算

目录 1-lapply()函数介绍&#xff1a; 例子1&#xff1a; 例子2&#xff1a; 例子3&#xff1a; 2-在Windows使用并行计算&#xff0c;使用parLapply()函数 2.1-并行计算的准备阶段&#xff1a; 2.2-parLapply()函数介绍 2.3-使用parLapply()函数编写执行并行计算 2.4-…

Sentinel整合Spring Cloud Gateway、Zuul详解

Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块&#xff0c;此模块中包含网关限流的规则和自定义 API 的实体和管理逻辑&#xff1a; GatewayFlowRule&#xff1a;网关限流规则…

Python AI 绘画

Python AI 绘画 本文我们将为大家介绍如何基于一些开源的库来搭建一套自己的 AI 作图工具。 需要使用的开源库为 Stable Diffusion web UI&#xff0c;它是基于 Gradio 库的 Stable Diffusion 浏览器界面 Stable Diffusion web UI GitHub 地址&#xff1a;GitHub - AUTOMATI…

棒球电影产业建设·野球1号位

棒球电影产业建设 1. 引言 棒球电影产业在美国和全球的历史发展概述 自20世纪初&#xff0c;棒球电影产业在美国开始起步&#xff0c;以一种富有创意的方式将体育和娱乐结合起来&#xff0c;开创了一种全新的娱乐形式。这些电影为观众提供了一个了解棒球运动的独特视角&#…

力扣279.完全平方数(动态规划)

class Solution { public:int numSquares(int n) {vector<int> f(n 1);for (int i 1; i < n; i) {int minn INT_MAX;for (int j 1; j * j < i; j) {minn min(minn, f[i - j * j]); //上一次的 & 当前数可以找到一个新的更大的平方}f[i] minn 1; }…

Godot4 C# vscode开发环境搭建

用vscode搭建Godot4 C# 开发环境搭建 软件Godot配置vscode配置结果参考 软件 Godot .Net版本: 下载链接vscode :自行下载.netcore7&#xff1a;.netcore6可能也行vscode插件&#xff1a; Godot配置 1.配置文件用VSCode打开 2.生成C#项目 项目–>工具–>C#->Creat…

WPF实战项目十一(API篇):待办事项功能api接口

1、新建ToDoController.cs继承基础控制器BaseApiController&#xff0c;但是一般业务代码不写在控制器内&#xff0c;业务代码写在Service&#xff0c;先新建统一返回值格式ApiResponse.cs&#xff1a; public class ApiResponse{public ApiResponse(bool status, string mess…

【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(中)

你可以使用 Jersey 和 CXF 这些来写一个 Rest 或 SOAP 服务的java客服端。 你也可以直接使用 Apache HttpClient 来实现。但是 Feign 的目的是尽量的减少资源和代码来实现和 HTTP API 的连接。 *通过自定义的编码解码器以及错误处理&#xff0c;你可以编写任何基于文本的 HTT…

python数据分析 期末测验,python数据分析基础题库

大家好&#xff0c;小编为大家解答python数据分析选择题题目的问题。很多人还不知道python数据分析题目和答案&#xff0c;现在让我们一起来看看吧&#xff01; 自测试卷 5 一、选择题 1 &#xff0e;下面关于 RFM 模型说法正确的是&#xff08; &#xff09;。 A &#xff0e;…

现代C++中的从头开始深度学习【2/8】:张量编程

一、说明 初学者文本&#xff1a;此文本需要入门级编程背景和对机器学习的基本了解。张量是在深度学习算法中表示数据的主要方式。它们广泛用于在算法执行期间实现输入、输出、参数和内部状态。 在这个故事中&#xff0c;我们将学习如何使用特征张量 API 来开发我们的C算法。具…

gradle 命令行单元测试执行问题

文章目录 问题&#xff1a;命令行 执行失败最终解决方案&#xff08;1&#xff09;ADB命令&#xff08;2&#xff09;Java 环境配置 问题&#xff1a;命令行 执行失败 命令行 执行测试命令 无法使用&#xff08;之前还能用的。没有任何改动&#xff0c;又不能用了&#xff09; …

Learning Rich Features for Image Manipulation Detection阅读笔记

文章目录 Abstract3.3. 双线性池 Abstract 图像篡改检测与传统的语义目标检测&#xff08;semantic object detection&#xff09;不同&#xff0c;因为它更关注篡改伪影&#xff08;tampering artifacts&#xff09;而不是图像内容&#xff0c;这表明需要学习更丰富的特征。我…

微服务架构基础--第3章Spring Boot核心功能讲解

第3章Spring Boot核心功能讲解 一.预习笔记 1.使用maven创建SpringBoot项目 1-1:创建一个maven项目 1-2:在pom文件中导入依赖 1-3&#xff1a;编写启动类&#xff08;注意启动类的位置&#xff09; 1-4&#xff1a;编写测试类 1-5&#xff1a;运行SpringBoot启动类 2.了解p…

JPA实现存储实体类型信息

本文已收录于专栏 《Java》 目录 背景介绍概念说明DiscriminatorValue 注解&#xff1a;DiscriminatorColumn 注解&#xff1a;Inheritance(strategy InheritanceType.SINGLE_TABLE) 注解&#xff1a; 实现方式父类子类执行效果 总结提升 背景介绍 在我们项目开发的过程中经常…

大模型AI人才培养研习会,上海、武汉站同期招募!

伴随预训练大语言模型技术引发的产业变革&#xff0c;市场对AI人才需求也同样发生着深刻变化&#xff0c;教育迎来了新的机遇与挑战。由中国自动化学会主办&#xff0c;百度公司联合知名高校承办的大模型AI人才培养研习会&#xff0c;首场将于8月19日在武汉、上海双城同期举办&…

flutter-GridView使用

先看效果 代码实现 import package:app/common/util/k_log_util.dart; import package:app/gen/assets.gen.dart; import package:app/pages/widget/top_appbar.dart; import package:flutter/cupertino.dart; import package:flutter/material.dart; import package:flutter_…

iOS 实现图片高斯模糊效果

效果图 用到了 UIVisualEffectView 实现代码 - (UIVisualEffectView *)bgEffectView{if(!_bgEffectView){UIBlurEffect *blur [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];_bgEffectView [[UIVisualEffectView alloc] initWithEffect:blur];}return _bgEffect…

吃瓜教程-Task05

目录 支持向量机 间隔与支持向量 SVM基本型 对偶问题 kkt条件 例子 对偶问题 例子 对偶问题原理解释 软间隔与正则化 替代损失函数 支持向量回归 例子 支持向量机 间隔与支持向量 在样本空间中&#xff0c;划分超平面可通过如下线性方程来描述: 样本空间中任意点x到…

在软件测试中,如何有效地跟踪和管理缺陷?

在软件测试中&#xff0c;跟踪和管理缺陷是非常重要的&#xff0c;因为这有助于确保所有问题得到妥善处理&#xff0c;避免在产品发布后出现问题。以下是跟踪和管理缺陷的一些有效方法&#xff1a; 1.创建缺陷报告&#xff1a;当发现一个缺陷时&#xff0c;应该立即创建一个缺…

无涯教程-Perl - binmode函数

描述 此函数设置在区分两者的操作系统上以二进制形式读取和写入FILEHANDLE的格式。非二进制文件的CR LF序列在输入时转换为LF,在LF时在输出时转换为CR LF。这对于使用两个字符分隔文本文件中的行的操作系统(MS-DOS)至关重要,但对使用单个字符的操作系统(Unix,Mac OS,QNX)没有影…