带你了解数据库的存储过程

article/2025/10/22 10:18:07

目录

一. 存储过程概述

1.1.什么是存储过程

1.2.存储过程的优缺点

二. 存储过程语法

2.1.创建存储过程

2.2.调用存储过程

2.3.删除存储过程

2.4.查看存储过程

三. 存储过程实例

四. 数据库专栏  


一. 存储过程概述

1.1.什么是存储过程

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。MySQL 5.0 版本开始支持存储过程。

它是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

1.2.存储过程的优缺点

优点:

  • 存储过程在服务器端运行,执行速度快。
  • 存储过程执行一次后,经过第一次编译后就不需要再次编译,提高了系统性能。
  • 确保数据库的安全。使用存储过程可以完成所有数据库操作,并可通过编程方式控制上述操作对数据库信息访问的权限

缺点:

  • 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
  • 存储过程的性能调校与撰写,受限于各种数据库系统。

二. 存储过程语法

2.1.创建存储过程

创建存储过程语法:

create procedure 存储过程名(参数列表)
begin-- 过程体
end;

实例:根据部门编号,返回此部门所有员工的总工资。

drop procedure if exists getsalbydeptno;
create procedure getsalbydeptno(in dno int,out salsum decimal(7,2))
beginselect sum(sal) into salsum from emp where deptno=dno;
end;
  • 存储过程参数有三种模式:in,out和inout。
  1. in:传入参数(默认)
  2. out:传出参数
  3. inout:此参数是in和out参数的组合。这意味着存储过程可以修改此参数并将新值传递回调用程序。
  • 注意:参数名不能与字段名重名。
  • 在select语句中,使用into关键词给传出参数赋值。

2.2.调用存储过程

调用存储过程语法:

call getsalbydeptno(10,@salsum);
select @salsum;
  1. 使用call关键词调用存储过程。
  2. 传出参数使用 @salsum 的形式声明。

2.3.删除存储过程

删除存储过程语法:

drop procedure [if exists] 存储过程名;

删除getsalbydeptno存储过程:

drop procedure if exists getsalbydeptno;

2.4.查看存储过程

查看数据库中的所有存储过程:

show procedure status;

三. 存储过程实例

需求:公司员工离职后,需要从emp表中删除此员工的信息。但是为了能够保存历史记录,所以删除的员工信息需要备份到emp_copy表中。下面使用存储过程来完成这个功能:

/* 创建存储过程 */
drop procedure if exists backup;
create procedure backup(in eno int)
begindeclare tex int default 0;select 1 into tex from information_schema.tables where table_name='emp_copy';if tex<>1 thencreate table emp_copy select * from emp where 1=0;end if;insert into emp_copy select * from emp where empno=eno;delete from emp where empno=eno;
end;/* 调用存储过程 */
/* call backup(7369); */
  • declare tex int default 0: 声明一个变量tex,并赋默认值为0;
  • select 1 into tex from information_schema.tables where table_name='emp_copy':从系统表information_schema.tables中查询是否存在 emp_copy 表,如果存在,给变量tex 赋值为 1;
  • if tex<>1 then  ...   end if:判断tex变量的值是否为1;

四. 数据库专栏  

https://blog.csdn.net/weixin_53919192/category_11813282.html?spm=1001.2014.3001.5482icon-default.png?t=M7J4https://blog.csdn.net/weixin_53919192/category_11813282.html?spm=1001.2014.3001.5482


http://chatgpt.dhexx.cn/article/U3I2ix1Z.shtml

相关文章

postgreSql 数据库存储目录

我的PostgreSql安装目录为&#xff1a;G:\Apps\PostgreSQL 数据库文件存储在&#xff1a;G:\Apps\PostgreSQL\14\data\base 执行sql查看数据库信息&#xff1a; select oid, datname from pg_database ; --pg_database表存储关于可用数据库的信息 结果如下&#xff1a;oid对应…

Mysql数据库存储emoji表情

一、起源 我想让我的新闻评论内容能更加丰富~话不多说。 &#xff08;1&#xff09;改变Navicat中的字段的字符集 然后发现还是没办法存进去正确的emoji表情嘞。&#xff08;失败了&#xff09; &#xff08;2&#xff09;找到mysql数据库配置文件 my.ini 增加&#xff…

达梦数据库存储过程

达梦数据库简单存储过程 文章目录 达梦数据库简单存储过程一、存储过程概述语法 二、达梦数据库简单存储过程编写 一、存储过程概述 存储过程数据库系统中&#xff0c;一组为了完成特定功能的SQL 语句集&#xff0c;它存储在数据库中&#xff0c;一次编译后永久有效&#xff0…

【学习笔记】25、关系数据库存储

关系数据库存储 一、关系数据库介绍 关系型数据库&#xff0c;是指采用了关系模型来组织数据的数据库&#xff0c;其以行和列的形式存储数据&#xff0c;以便于用户理解&#xff0c;关系型数据库这一系列的行和列被称为表&#xff0c;一组表组成了数据库。用户通过查询来检索数…

数据库存储图片路径并显示到前端

数据库存储图片路径并显示到前端 -为啥不直接存图片&#xff1a;因为图片本身太大了&#xff0c;虽然存取方便了程序员&#xff0c;但对数据库不友好。所以采取存取路径&#xff0c;再根据路径解析的方法。 一、数据库表设计&#xff1a; 从以上思想出发&#xff0c;需要存图…

SQL Server数据库基础知识——数据库存储过程怎么写

SQL Server数据库基础知识 存储过程概述 什么是存储过程&#xff1f; 存储过程的种类 如何创建、修改、删除、调用存储过程&#xff1f; 存储过程的优缺点 存储过程和触发器的区别? 存储过程和函数的区别? 存储过程的使用 1. 什么是存储过程&#xff1f; 存储过程是…

GaussDB数据库存储过程介绍

文章目录 一、前言二、GaussDB中的定义三、存储过程的使用场景四、存储过程的使用优缺点五、存储过程的示例及示例解析1、GaussDB存储过程语法格式2、GaussDB存储过程语法示例3、存储过程的调用方法 七、总结 一、前言 华为云数据库GaussDB是一款高性能、高安全性的云原生数据…

查看当前数据库存储引擎

一&#xff1a;查看当前数据库支持的存储引擎 show ENGINES; 二:查看指定数据库所有表使用的存储引擎 使用 show table status from dbname;命令&#xff0c;可以查看指定数据库所有表使用的存储引擎&#xff0c;其中“dbname”为数据库名。 show table status from 库名; 三…

数据库储存Excel表信息

目录 目标 实验背景 原理 具体实现 目标 以Java程序为中介&#xff0c;将Excel表中的信息储存到Mysql数据库中 实验背景 先需要将一张包含学生和老师信息的Excel表中的数据存储到Mysql数据库中 原理 先通过相关jar包的类从Excel表中读取到信息&#xff0c;接着对这些信息…

数据库之存储

无论是什么数据库&#xff0c;其本质还是以数据的形式存储在计算机的物理介质上的&#xff0c;所以&#xff0c;我们先来看看什么是物理存储介质。 物理存储介质:高速缓冲存储器->主存储器->快闪存储器->磁盘->光盘->磁带,从左到右性能由高到低&#xff0c;价格…

数据库存储介绍

数据存储在存储设备中&#xff0c;在实际应用中&#xff0c;有多种存储设备&#xff0c;下面我们一一介绍。同时在保存数据时&#xff0c;有特定的组织方式&#xff0c;在下面我也做简单介绍。 一 存储设备介绍 1.1 高速缓存 Cache&#xff0c;计算机拥有1M或跟多的高速…

Excel|给某一列添加同一个字

如图所示给新型冠状病毒肺炎数据中“武汉”这一列都加上“市”字&#xff1a; 先在D列打两行&#xff1a;“武汉市”、“孝感市” 然后在D3按CtrlE&#xff0c;即可全部填充 ps:如果删除某列同一个字的话用替换即可

鼠标单击就选中一个字的解决办法

有时候我们想在两个字中间插入一个字&#xff0c;点击鼠标时却总是选中一个字。 解决办法&#xff1a; 按一下键盘的Insert键就好了。 造成这种情况的原因&#xff1a;极大可能是因为我们删除文字时不小心碰到了Insert键。 看完如果对你有帮助&#xff0c;感谢点赞支持&…

什么是字节

** 什么是字节 ** 位&#xff08;bit&#xff09;:是计算机 内部数据 存储的最小单位 11001100是一个八位数的二进制数。 字节&#xff08;byte &#xff09;&#xff1a;是计算机中 数据处理的基本单位&#xff0c;习惯上用大写B来表示&#xff1b; 1B&#xff08;byte,字节…

关于“一个字等于多少字节?“的问题解答

网上有人说这个问法不严谨&#xff0c;我觉得严格说确实是这样&#xff0c;但是我个人觉得不能这样说&#xff01; 举个例子&#xff0c;这个问题就好比你上初中的时候那些证明题很多其实是很不严谨的&#xff0c;但是限于知识体系&#xff0c;到高中你会发现好像不是那么一回…

键盘打字时,打一个字后面少一个字如何解决

键盘敲字时&#xff0c;如果光标在中间&#xff0c;输入一个字后面就少一个字 文字输入的例子 只需要按INS键就可以恢复正常了 注&#xff1a;如果是手提笔记本电脑&#xff0c;一个键盘有两下两行&#xff0c;先按一下FN按键&#xff0c;再按INS即可切换为正常状态了

“一个字等于多少个字节?”是一个不严谨的问法

“一个字等于多少个字节&#xff1f;”是一个不严谨的问法 直接回答一个字等于多少个字节&#xff0c;也是不严谨的答法。 相关概念: 1、位&#xff08;bit&#xff09; 来自英文bit&#xff0c;音译为“比特”&#xff0c;表示二进制位。位是计算机内部数据储存的最小单位。…

parted分区命令行形式

一、pared分区实例 1、第一个主分区3G parted -s /dev/sdc mklabel gpt (标签为gpt&#xff0c;小于2t用msdos) parted -s /dev/sdc mkpart primary 0 3G 2、剩余空间给扩展分区 parted -s /dev/sdc mkpart entended 3 100% &#xff08;从3G开始后面都做扩展分区&#xff09;…

centos通过parted对2T以上硬盘分区并对根目录进行扩容

GPT的分区表很好了解决了传统MBR无法逾越2TB的限制。但是在Linux系统中&#xff0c;传统的fdisk命令无法支持gpt分区方式&#xff0c;这时候我们就要用到parted命令 需求&#xff1a; 将一个4t的硬盘&#xff08;sdb)分为3个区&#xff0c;并将sdb1挂载在根目录下进行扩容 1…

Linux Command parted 创建分区

Linux Command parted 创建分区 tags: lvm 文章目录 Linux Command parted 创建分区1. 简介2. 交互模式2.1 常见命令2.2 查看分区表2.3 修改成 GPT 分区表2.4 建立分区2.5 建立文件系统2.6 调整分区大小2.7 删除分区 3. 命令行模式 1. 简介 虽然我们可以使用 fdisk命令对硬…