MySQL存储过程、创建、调用、查看、删除、存储过程与函数的额区别、缺陷等、存储过程写分页等

news2025/1/20 18:23:22

MySQL存储过程

        • 1、存储过程的定义
        • 2、存储过程使用的意义
        • 3、存储过程的创建
        • 4、存储过程的调用
        • 5、存储过程的查看
        • 6、存储过程的删除
        • 7、存储及过程与函数的区别
        • 8、存储过程的缺陷
        • 9、存储过程写分页

1、存储过程的定义

存储过程:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后,再次调用不需要重复编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

用一张图理解就是:

在这里插入图片描述

2、存储过程使用的意义
  1. 业务流陈复杂:业务复杂时,SQL语句相互依赖,顺序执行
  2. 频繁访问数据库:每条SQL语句都需要单独连接和访问数据库
  3. 先编译后执行:SQL语句的执行需要先编译
3、存储过程的创建
delimiter $$
CREATE PROCEDURE (
[ [IN |OUT |INOUT ] 参数名 数据类型…])
BEGIN
	DECLARE 变量 变量类型
END $$
delimiter ;

说明:
	‘[]’内容不是必须的部分
	in:表示入参
	out:表示出参
	inout:表示既入参又是返回值
	delimiter:在mysql中‘;’的作用是结束一个SQL语句,但是在存储过程中一组sql语句共同执行,如果使用‘;’那么后面的sql语句将无法同批次执行,因此先将结束符号设置为$$,而后又恢复为‘;’;
	
存储过程的创建
eg:
delimiter $$
create procedure proc_demo1()
begin 
	select * from student;
end $$
delimiter ;

-- 带参的存储过程
delimiter $$
create procedure proc_demo2(
	in x int,   -- in 只入参
	out y int,  -- out 只出参
	inout z int  -- inout 出入参
)
begin 
	set x = x+10;
	set y = y+100;
	set z = z+1000;
end $$
delimiter ;
4、存储过程的调用
call 存储过程名(参数名)

eg:
	call proc_demo1()
	
	
-- 环境变量 局部环境变量 @xx  全局环境变量@@x 
set @a = 1;  
set @b = 2;
set @c = 3;
select @a,@b,@c
call proc_demo2(@a,@b,@c)
select @a,@b,@c
5、存储过程的查看
select * from information_schema.ROUTINES where routine_schema='库名'
6、存储过程的删除
drop procedure 存储过程名
7、存储及过程与函数的区别
  1. 语法:存储过程procedure,函数function
  2. 执行:存储过程可以独立执行,函数必须依赖表达式的调用
  3. 返回值:存储过程可以定义多个返回结果,函数只有一个返回结果
  4. 功能:函数不易做复杂的业务逻辑,但是存储过程可以
8、存储过程的缺陷
  1. 维护性:存储过程的维护成本高,修改调试较为麻烦
  2. 移植性:大多数关系型数据库的存储过程存在席位差异
  3. 协作性:没有相关的版本控制或者IED,团队中对于存储过程的使用大多是依赖文档
9、存储过程写分页
delimiter $$
create procedure proc_stuPage2(
	in curpage int,
	in sizepage int,
	out countsum int,
	out pagesum int
)
begin 
	declare weizhi int;
	set weizhi = (curpage-1)*sizepage;
	select count(*) from student into countsum;
	set pagesum = ceiling( countsum / sizepage );
	select * from student limit weizhi, sizepage;
end $$
delimiter ;


调用:
set @a = 2;
set @b = 3;
set @c = 0;
set @d = 0;
call proc_stuPage2(@a,@b,@c,@d)

select @a,@b,@c,@d

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

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

相关文章

【Java EE初阶三 】线程的状态与安全(下)

3. 线程安全 线程安全:某个代码,不管它是单个线程执行,还是多个线程执行,都不会产生bug,这个情况就成为“线程安全”。 线程不安全:某个代码,它单个线程执行,不会产生bug&#xff0c…

【第5期】前端Vue使用Proxy+Vuex(store、mutations、actions)跨域调通本地后端接口

本期简介 本期要点 本地开发前后端如何跨域调用全局请求、响应处理拦截器处理封装HTTP请求模块编写API请求映射到后端API数据的状态管理 一、 本地开发前后端如何跨域调用 众所周知,只要前端和后端的域名或端口不一样,就存在跨域访问,例如&…

QString设置小数点精度位数

QString设置小数点精度位数 Chapter1 QString设置小数点精度位数Chapter2 Qt中QString.toDouble有效位数6位问题以及数据小数点有效位数的处理问题一:QString.toDouble有效位只有6位问题二:小数点有效位数的问题 Chapter3 qt QString转Double只显示6位数字的问题(精…

FTP的基本介绍

FTP ftp的介绍: ftp是一个可以提供共享文件的服务器,他可以通过iis.msc也就是windows 的服务器管理器来打开,或者通过cmd命令行打开 如何使用iis.msc打开ftp,如何使用cmd打开ftp ,如何匿名登录ftp,ftp和…

设计模式-调停者模式

设计模式专栏 模式介绍模式特点应用场景调停者模式与命令模式的比较代码示例Java实现调停者模式Python实现调停者模式 调停者模式在spring中的应用 模式介绍 调停者模式是一种软件设计模式,主要用于模块间的解耦,通过避免对象之间显式的互相指向&#x…

YOLOv8改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)

一、本文介绍 本文给家大家带来的改进机制是iRMB,其是在论文Rethinking Mobile Block for Efficient Attention-based Models种提出,论文提出了一个新的主干网络EMO(后面我也会教大家如何使用该主干,本文先教大家使用该文中提出的注意力机制…

Java超高精度无线定位技术--UWB (超宽带)人员定位系统源码

UWB室内定位技术是一种全新的、与传统通信技术有极大差异的通信新技术。它不需要使用传统通信体制中的载波,而是通过发送和接收具有纳秒或纳秒级以下的极窄脉冲来传输数据,从而具有GHz量级的带宽。 UWB(超宽带)高精度定位系统是一…

08.哲说建造者模式(Builder Pattern)

“The odds that we’re in ‘base reality’ is one in billions.” —— Elon Musk 这段话出自马斯克在2016年的一次演讲,“人类活在真实世界的几率,可能不到十亿分之一”。此言一出,可谓一石激起千层浪。有人嘲讽马斯克是“语不惊人死不休…

论文阅读——SG-Former

SG-Former: Self-guided Transformer with Evolving Token Reallocation 1. Introduction 方法的核心是利用显著性图,根据每个区域的显著性重新分配tokens。显著性图是通过混合规模的自我关注来估计的,并在训练过程中自我进化。直观地说,我们…

3D视觉-相机选用的原则

鉴于不同技术方案都有其适用的场景,立体相机的选型讲究的原则为“先看用途,再看场景,终评精度”,合适的立体相机在方案中可以起到事半功倍的效果。从用途上来进行划分,三维视觉方案主要应用在两个方向:测量…

PyTorch常用工具(1)数据处理

文章目录 前言1 数据处理1.1 Dataset1.2 DataLoader 前言 在训练神经网络的过程中需要用到很多的工具,最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块,合理使用这些工具可以极大地提高编程效率。 由于内容较多&am…

【每日一题】一周中的第几天

文章目录 Tag题目来源解题思路方法一:模拟 写在最后 Tag 【模拟】【数学】【2023-12-30】 题目来源 1185. 一周中的第几天 解题思路 方法一:模拟 思路 题目中的日期是在 1971 到 2100 年之间的有效日期,即 1971-01-01 到 2100-12-31 范围…

Scene Creator

场景创建器是一个方便、易于使用的编辑工具,旨在简化创建新场景的过程。使用场景创建器,您可以选择一个模板场景,定义一个目录来存储您的场景,并在需要时自动将新场景添加到构建中。 下载: ​​Unity资源商店链接 资…

数据结构:第7章:查找(复习)

目录 顺序查找: 折半查找: 二叉排序树: 4. (程序题) 平衡二叉树: 顺序查找: ASL 折半查找: 这里 j 表示 二叉查找树的第 j 层 二叉排序树: 二叉排序树(Binary Search Tree&…

李宏毅 自然语言处理(Voice Conversion) 笔记

前一章笔记:李宏毅 自然语言处理(Speech Recognition) 笔记 引入 什么是voice conversion? 输入一段声音,输出另一段声音,我们希望这两端声音:内容一样,其他方面不一样&#xff08…

6个火爆全网的AI开源项目,用上月10万+

标题月10万可能说的有点夸张和含糊,10万具体指的是你可以利用这些开源项目实现: 访问量10万 收入10万 用户10万 …… 开源项目只是免费的工具,具体怎么实现还需要你根据自己需求去深入运营。这里只是给你推荐一些比较热门的开源项目&…

html-css-js移动端导航栏底部固定+i18n国际化全局

需求:要做一个移动端的仿照小程序的导航栏页面操作,但是这边加上了i18n国家化,由于页面切换的时候会导致国际化失效,所以写了这篇文章 1.效果 切换页面的时候中英文也会跟着改变,不会导致切换后回到默认的语言 2.实现…

【ESP-NOW with ESP32:向多个开发板发送数据(一对多)】

【ESP-NOW with ESP32:向多个开发板发送数据(一对多)】 1. 项目概况2. 先决条件2.1 环境配置2.2 所需零件 3. 获取主板 MAC 地址4. ESP32 发射器 (ESP-NOW)4.1 接收方的MAC地址4.2 OnDataSent()…

2023-12-16 LeetCode每日一题(统计区间中的整数数目)

2023-12-16每日一题 一、题目编号 2276. 统计区间中的整数数目二、题目链接 点击跳转到题目位置 三、题目描述 给你区间的 空 集,请你设计并实现满足要求的数据结构: **新增:**添加一个区间到这个区间集合中。 **统计:**计算…

Plantuml之甘特图语法介绍(二十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…