首页 > 其他分享 >存储过程(第一篇)

存储过程(第一篇)

时间:2024-11-07 19:47:41浏览次数:6  
标签:语句 存储 变量 自定义 第一篇 -- 过程

今天为大家带来的是MySQL的存储过程讲解与运用,这篇文章主要是为了带大家存储过程的引用与理解。

存储过程是什么?

存储过程(Stored Procedure)是数据库中一组为了完成特定功能的SQL语句集,这些语句集被编译并保存在数据库中,用户可以通过调用存储过程的名字并传递参数(如果有的话)来执行这些语句集。存储过程允许用户重复使用SQL代码,从而提高应用程序的可维护性和性能。

存储过程的主要特点:

  1. 封装性
    • 存储过程将一系列SQL语句封装在一起,形成一个独立的模块。
    • 调用存储过程时,只需调用其名称并传递必要的参数,无需重复编写SQL代码。
  2. 重用性
    • 一旦存储过程被创建,它可以在多个应用程序中被重用,减少了代码的冗余。
  3. 安全性
    • 通过存储过程,可以限制对数据库的直接访问,只允许用户执行特定的操作。
    • 存储过程可以包含复杂的逻辑和错误处理机制,提高系统的可靠性。
  4. 性能优化
    • 存储过程在数据库服务器端执行,减少了客户端和服务器之间的通信开销。
    • 数据库系统可以对存储过程进行预编译和优化,提高执行效率。
  5. 事务处理
    • 存储过程可以包含多个SQL语句,这些语句可以作为一个事务来执行,确保数据的一致性和完整性。

创建和使用存储过程的基本语法:

1.创建存储过程

语法:

 -- 创建存储过程
CREATE PROCEDURE 过程名 ([过程参数[,······]])
[特性]
存储过程体

案列:

-- 创建存储过程
CREATE PROCEDURE pro_patient_countPatient()
BEGIN  -- 过程体开始
SELECT COUNT(*) FROM patient; --编写sql语句
END  -- 过程体结束
注意事项:
  • 不同的数据库管理系统(如MySQL、PostgreSQL、Oracle、SQL Server等)在存储过程的语法和功能上可能存在差异。
  • 存储过程应谨慎设计,避免复杂度和依赖性的增加,以免难以维护。
  • 在调试和测试存储过程时,应确保其逻辑正确,并处理可能的异常情况。

通过合理使用存储过程,可以显著提高数据库应用程序的开发效率和运行性能。

2.调用存储过程

在创建好了存储过程后,要如何进行调用呢?

在MySQL中使用CALL关键字调用存储过程,语法非常简单,语法格式如下:

CALL 存储过程名(参数列表);

案列如下:

-- 创建存储过程
CREATE PROCEDURE pro_patient_countPatient()
BEGIN  -- 过程体开始
SELECT COUNT(*) FROM patient; --编写sql语句
END  -- 过程体结束

CALL pro_patient_countPatient();

3.存储过程中的变量

存储过程中的变量是什么?

在MySQL存储过程中,变量是用于存储数据以便在存储过程的执行过程中进行引用和操作的元素。MySQL存储过程中的变量主要分为三种类型:系统变量、用户自定义变量和局部变量。

1. 系统变量

系统变量是由MySQL服务器提供的,不是用户定义的,它们属于服务器层面。系统变量分为全局变量(GLOBAL)和会话变量(SESSION)两种。

  • 全局变量:全局变量对整个MySQL服务器实例有效,所有会话都可以访问和修改(但需要相应的权限)。服务器每次启动时,都会为所有的全局变量赋予初始值。全局变量的作用域是服务器级别的,但不能跨重启,即服务器重启后,之前设置的全局变量值会失效。
  • 会话变量:会话变量仅对当前会话(连接)有效,其他会话无法访问或修改。会话变量的作用域是会话级别的,当会话结束时,会话变量也会失效。
2. 用户自定义变量

用户自定义变量是用户根据需要自己定义的变量,它们的作用域为当前连接(会话)。用户自定义变量无需提前声明,在使用时直接在变量名前加上“@”字符即可。用户自定义变量可以在存储过程、触发器、事件以及普通的SQL查询中使用。

3. 局部变量

局部变量是在存储过程或函数内部定义的变量,它们的作用域仅限于定义它们的BEGIN...END块内。局部变量在访问之前需要用DECLARE语句进行声明,并可以指定变量的类型和默认值(如果有的话)。局部变量的命名不能与存储过程或函数的参数名相同。

变量的使用
  • 赋值:对于系统变量和用户自定义变量,可以使用SET语句或SELECT...INTO语句进行赋值。对于局部变量,只能在声明时指定默认值或在存储过程的执行过程中使用SET语句进行赋值。
  • 引用:在存储过程中,可以通过变量名来引用变量的值。对于用户自定义变量和局部变量,需要在变量名前加上“@”字符(仅用户自定义变量)或直接使用变量名(局部变量和会话变量,但在会话变量前通常也加上“@@”以区分全局变量)。
注意事项
  • 在使用变量时,要确保变量的作用域和生命周期与存储过程的执行流程相匹配。
  • 要避免变量名的冲突,特别是当在存储过程中使用多个变量时。
  • 对于系统变量,特别是全局变量,要谨慎修改,因为它们会影响整个MySQL服务器实例的行为。

语法:

DECLARE 变量名[,变量名······] 数据类型 [DEFAULT 值];

案例:

DECLARE trade_time date DEFAULT '2020-07-10'; -- DECLARE 声明变量  -- DEFAULT 默认

声明变量后,可以给变量赋值。语法如下:

SET 变量名 = 表达式值 [, 变量名=表达式...];

案列:

SET total=100;

标签:语句,存储,变量,自定义,第一篇,--,过程
From: https://blog.csdn.net/2401_88512872/article/details/143587930

相关文章

  • MySQL高级语言(第一篇)
    1.SQL高级语言是什么?SQL(StructuredQueryLanguage)本身是一种用于管理和操作关系数据库的标准编程语言,它并不是传统意义上的“高级语言”如C++、Java或Python等。然而,在数据库管理和开发的语境中,人们有时会提到“SQL高级语言”或“SQL的高级特性”,这通常指的是SQL中那些更为复......
  • etcd分布式键值存储系统
    etcdetcd是一个分布式键值存储系统,它在分布式系统领域具有重要地位,以下是关于它的详细介绍:一、基本概述etcd是用Go语言开发的,具有高可用性、强一致性、分布式等特点,主要用于存储和管理关键数据,并在分布式系统中起到协调和同步的作用。二、核心特性1.高可用性etcd......
  • 进程调度的时机、方式、切换与过程
    进程调度的时机、方式、切换与过程(理解)​​‍一、进程调度的时机​​有的系统中,只允许进程主动放弃处理机。有的系统中,进程可以主动放弃处理机,当有更紧急的任务需要处理时,也会强行剥夺处理机(被动放弃)。‍​​对2.的补充:——临界资源:一个时间段内只允许一个进程使用的......
  • 进程调度的时机、方式、切换与过程
    进程调度的时机、方式、切换与过程(理解)​​‍一、进程调度的时机​​有的系统中,只允许进程主动放弃处理机。有的系统中,进程可以主动放弃处理机,当有更紧急的任务需要处理时,也会强行剥夺处理机(被动放弃)。‍​​对2.的补充:——临界资源:一个时间段内只允许一个进程使用的......
  • 进程调度的时机、方式、切换与过程
    进程调度的时机、方式、切换与过程(理解)​​‍一、进程调度的时机​​有的系统中,只允许进程主动放弃处理机。有的系统中,进程可以主动放弃处理机,当有更紧急的任务需要处理时,也会强行剥夺处理机(被动放弃)。‍​​对2.的补充:——临界资源:一个时间段内只允许一个进程使用的......
  • 进程调度的时机、方式、切换与过程
    进程调度的时机、方式、切换与过程(理解)​​‍一、进程调度的时机​​有的系统中,只允许进程主动放弃处理机。有的系统中,进程可以主动放弃处理机,当有更紧急的任务需要处理时,也会强行剥夺处理机(被动放弃)。‍​​对2.的补充:——临界资源:一个时间段内只允许一个进程使用的......
  • 进程调度的时机、方式、切换与过程
    进程调度的时机、方式、切换与过程(理解)​​‍一、进程调度的时机​​有的系统中,只允许进程主动放弃处理机。有的系统中,进程可以主动放弃处理机,当有更紧急的任务需要处理时,也会强行剥夺处理机(被动放弃)。‍​​对2.的补充:——临界资源:一个时间段内只允许一个进程使用的......
  • 【Linux内核设计思想】三、Linux内核的启动过程
    欢迎关注博主Mindtechnist或加入【智能科技社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关注公粽号《机器和智能》回复关键词“python项目实战......
  • 如何看懂sa-token 第一篇 是怎么设计被spring加载的
    2023年入职了一家公司,他们给到我这边的系统架构我看基本都用到了sa-token,抱着去学习的态度去官网看了文档Sa-Token,感觉有些头大,摸不着头脑,然后尝试去下载源码来看gitclonehttps://gitee.com/dromara/sa-token.git我看的时候,最新版本是v1.39.0,代码一大推,实在看不明白看懂源......
  • oracle11g启动过程中加载配置文件
    oracle指定配置文件启动,要是不指定配置文件启动的话默认找的参数文件顺序如下:在oracle11g中oracle启动过程中默认会加载相应的配置文件来启动oracle服务。检查参数文件有两个,一个是spfile<ORACLE_SID>.ora文件,另一个是inti<ORACLE_SID>.ora文件。oracle软件服务安装完成后......