MySQL(七)存储过程

【MySQL】实验七 触发器与存储过程 触发器 1. 创建商品价格修改记录表 2. 创建触发器,当更改商品价格(price列)时,记录价格 3. SQL触发器:插入新员工时,同步更新部门表相应人数 4. SQL触发器:删除学生数据 5. SQL触发器:创建成绩表插入触发器 6. 在学生表student上创建触发器,插入学生记录,同步更新班级表class中人数 存储过程 1. SQL存储过程:查询订单 2. SQL存储过程:建立存储过程,查询课程的成绩表 3. SQL存储过程:建立存储过程,查询学生的平均分 4. SQL存储函数:查询学生的平均分 阅读详情

数据库存储过程

MySQL 5.0 版本开始支持存储过程。

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象,它可以封装成SQL语句集,以便完成一些较为复杂的业务逻辑,并且可以想 Java 等高级编程语言一样输入参数。

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

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

问题来了?

为什么wo们不直接使用 SQL来查询业务数据,Java 来处理业务逻辑,这样子做不行吗?为什么要费尽心思去特意学SQL的存储过程来处理业务逻辑?

因为我们在实际的生产当中,我们可以通过修改存储过程的方式修改业务逻辑,而不用启动服务器。另一方面,存储过程是期间京每一条SQL语句都进行编译,并保存在数据库当中,那么我们通过Java程序调用SQL语句时可以不同一条条的进行编译,而是直接调用存储过程,这样的效率更高。

  • 优点

    • 存储过程可封装,并隐藏复杂的商业逻辑。
    • 存储过程可以回传值,并可以接受参数。
    • 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。
    • 存储过程可以用在数据检验,强制实行商业逻辑等。
  • 缺点

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

1. 语法结构

CREATE
    [DEFINER = { user | CURRENT_USER }]
 PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body
   
-- proc_parameter参数部分(先写参数名,再写参数类型):      [ IN | OUT | INOUT ] param_name type  
                                                                                                      -- type 是 MySQL 支持的所有类型
                                                                                                      
-- routine_body(程序体)部分 ,可以书写合法的SQL语句:  BEGIN ...... END$$
  • 声明语句结束符,可以自定义:

    DELIMITER $$
    
  • 声明存储过程:

    CREATE PROCEDURE hello_procedurer(IN 参数名 参数类型)   
    
  • 存储过程开始和结束符号:

    BEGIN .... END   
    
  • 演示示例:

  • -- 声明语句结束符,可以自定义:
    delimiter $$
    -- 创建存储过程,名为  hello_procedure, 参数为空, 执行输出 'hello world'
    create procedure hello_procedure ()
    begin
        select 'hello world';
    end $$
    -- 声明语句结束符
    delimiter ;
    -- 调用春初过程
    call hello_procedure();
    -- 删除存储过程
    drop procedure hello_procedure;
    
    

2. 变量结构

MySQL变量一共分为两大类:用户自定义变量和系统变量。如下:

  • 用户自定义变量(重点)
    • 局部变量
    • 会话变量
  • 系统变量(理解)
    • 会话变量
    • 全局变量
1. 局部变量

局部变量就是用户自定义,在begin … end 代码块中定义的,也在代码块中有效。

语法:
       declare  变量名  变量类型  [default 默认值]
举例:  declare name varchar(32) '张三'
-- set 赋值
delimiter $$

drop procedure if exists var01$$

create procedure var01()
begin
    -- 声明变量
    declare username varchar(32) default '张三';
    -- 为变量赋值
    set username = '李四';
    select username;
end $$

delimiter ;

call var01();
2. 会话变量

会话变量即为服务器为每个客户端连接维护的变量。在客户端连接时,使用相应全局变量的当前值对客户端的回话变量进行初始化。设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量。其作用域与生命周期均限于当前客户端连接。


delimiter $$
drop procedure if exists var02$$

-- 创建存储过程
create procedure var02()
begin
    set @username='张三';
end $$
delimiter ;

-- 调用存储过程
call var02();
-- 查询会话变量的值
select @username;

@username 会话变量可以在 begin … end 代码块中定义,也可以在外部定义,定义后同一变量名在内存中只有一份,且当前会话有效。

3. 入参变量和出参变量
  • IN 输入参数

    表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

    仅需要将数据传入存储过程,并不需要返回计算后的该值。

    只能当做传入参数

  • OUT 输出参数

    该值可在存储过程内部被改变,并可返回

    不接受外部传入的数据,仅返回计算之后的值。

    只能当做转出参数

  • INOUT 输入输出参数

    调用时指定,并且可被改变和返回

    需要数据传入存储过程经过调用计算后,再传出返回值

    可当做传入转出参数


详细演示

  1. 声明语句结束符,可以自定义:

    delimiter $$

  2. 创建一个会话变量,用于测试out对会话变量的影响

    set @username=‘wangwu’;

    image-20201122154131513

  3. 如果存在该存储过程,则删除

    drop procedure if exists var03$$

  4. 创建一个存储过程,命名为var03。 该存储过程是传入两个变量,第一个为输入in变量,第二个为是输出out变量。当输入用户id 时,返回用户名。

    create procedure var03(in id int,out username varchar(32))
    begin
        select id,username;
        -- select 'procedure into username' into username;
    end $$
    

    image-20201122154254634

  5. 声明语句结束符为 ;

    delimiter ;

  6. 查询会话变量用户名

    select @username;

    image-20201122154315401

    在还未调用存储过程时,我们发现此时的会话变量@username的值依然为 wangwu

  7. 调用存储过程,查看会话变量值是否正确

    call var03(35,@username);

    image-20201122154537704

    😤我们会发现,此时查询到的username会为空。???????? 这是为什么呢?😤

    这里就是 in 和 out 参数的区别了。 也有区别与Java等高级语言中的参数。

    如果是以Java的思想理解调用存储过程的话,我们可能会认为说 @username变量的值为wangwu 传入到 存储过程函数中,所以我们也理所应当的认为 username的值应该为wangwu。

    所以这就是错误的地方了。 out函数它只负责变量的接收,不负责传入值。 也就是说 调用call var03(35,@username); 的时候,@username只是将它的内存地址传进去,告诉存储过程说,等等你把out变量username的值给我(我是@username)。然后在存储过程中一直都没有给username进行赋值的操作,所以此时的username的值为null,最终就将null赋值给了 @username。

  8. 查询会话变量用户名

    select @username;

    image-20201122154722845

    看完了步骤7,也就大概了解了为什么@username经过存储过程后就变为空了。

  9. 删除之前的存储过程,打开存储过程中的注释,再次运行查看结果。

-- 测试in入参 out出参

set @username = 'wangwu';

delimiter $$
drop procedure if exists var03$$

create procedure var03(in id int, out username varchar(32))
begin
    select id, username;
    -- select 'procedure into username' into username;
    -- set username='procedure into username'
end $$

delimiter ;

select @username;

call var03(35, @username);
select @username;

3. 流程控制

在存储过程和自定义函数中可以使用流程控制语句来控制程序的流程。MySQL 中流程控制语句有:IF 语句、CASE 语句、LOOP 语句、LEAVE 语句、ITERATE 语句、REPEAT 语句和 WHILE 语句等。

下面将详细讲解这些流程控制语句。

1. 判断(IF 语句)

IF 语句用来进行条件判断,根据是否满足条件(可包含多个条件),来执行不同的语句,是流程控制中最常用的判断语句。其语法的基本形式如下:

IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list]...
    [ELSE statement_list]
END IF
------------------------------------------------------------------------------------------
IF  判断条件  THEN 执行语句
	[ELSELF  判断条件  THEN  执行语句]
	[ELSE  执行语句]
END IF

其中,search_condition 参数表示条件判断语句,如果返回值为 TRUE ,相应的 SQL 语句列表(statement_list)被执行;如果返回值为 FALSE,则 ELSE 子句的语句列表被执行。statement_list 可以包括一个或多个语句。

注意:MySQL 中的 IF( ) 函数不同于这里的 IF 语句。

🐱‍🏍剑来

set @username = '张三风';
delimiter $$
drop procedure if exists if01$$

create procedure if01()
begin

    IF @username = '张三' THEN
        select concat('我是',@username);
    ELSEIF  @username = '张三风' THEN
        select '张三是我徒弟';

    ELSE
        select '我是栗四,不认识张三';
    END IF;
end $$

delimiter ;xx
call if01;

该例子 主要演示的是 根据 username的值显示不一样的结果。结果很容易理解。

2. 判断(CASE语句)

CASE 语句也是用来进行条件判断的,它提供了多个条件进行选择,可以实现比 IF 语句更复杂的条件判断。CASE 语句的基本形式如下:

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list]...
    [ELSE statement_list]
END CASE
------------------------------------------------------------------
CASE  参数变量
    WHEN  参数变量1  THEN  执行语句]
    [WHEN  参数变量2  THEN  执行语句]
    [ELSE  执行语句]
END  CASE 

其中:

  • case_value 参数表示条件判断的变量,决定了哪一个 WHEN 子句会被执行;

  • when_value 参数表示变量的取值,如果某个 when_value 表达式与 case_value 变量的值相同,则执行对应的 THEN 关键字后的 statement_list 中的语句;

  • statement_list 参数表示 when_value 值没有与 case_value 相同值时的执行语句。

  • CASE 语句都要使用 END CASE 结束。

  • 这个就有点类似与 Java 中的 switch 语句的使用。 与之区别就是执行时,只要进入其中的一个判断语句之后,就不会在执行其他的,也不需要使用过break语句进行跳出。

3. 循环(loop)

语法:

[begin_label:] LOOP 
    statement_list ;
END LOOP [begin_label];
------------------------------------------------------------------
循环名: loop
	-- 循环体
	执行语句;
end loop 循环名;


反复执行循环体中的语句,直到循环结束。如果没有leave等关键字,此时的loop为死循环。

🐱‍🏍剑来

-- -----------关于loop的示例-------------------
-- 需求: 打印1-10,输出结果为 1,2,3,4......9,10
-- 如果存在loop_test,则先删除
drop procedure if exists loop_test;
delimiter $$
-- 创建存储过程loop_test
create procedure loop_test()
begin
    declare c_index int default 1;
    declare result_str varchar(256) default '1';
    cnt: loop
        -- 循环10次,则跳出循环
        if c_index >= 10 then
            leave cnt;
        end if;
  	  -- 自增
        set c_index = c_index + 1;
        -- 拼接
        select concat(result_str, ',', c_index) into result_str;
    end loop cnt;
    -- 查询结果
    select result_str;
end $$

delimiter ;
call loop_test();


image-20201126155808063

  • leave 就相当于Java中的break语句,用于跳出当前循环

上述例子,类比Java代码如下:

    public void loop_test() {
        String result_str = "1";
        int c_index = 1;
        while (true) {
            if (c_index >= 10) {
                break;
            }
            c_index = c_index + 1;
            result_str = result_str + "," + c_index;
        }
        System.out.println(result_str);
    }
4. 循环(while)

image-20201126165049875

MYSQL常用命令 MYSQL常用命令MYSQL常用命令MYSQL常用命令 立即下载

相关推荐

老N卡福音:GT1030/GTX1050在MacOS Ventura 13.2上的完整驱动指南(附实测截图)

本文详细介绍了如何在MacOS Ventura 13.2上通过OCLP工具链驱动GT1030和GTX1050等老款NVIDIA显卡,涵盖硬件兼容性验证、BIOS设置、OpenCore配置、驱动安装及性能测试全流程。实测数据显示,这些基于Pascal和Maxwell架构的显卡在当代MacOS系统中仍能发挥实用价值,为老N卡用户提供完整解决方案。

weixin_30832143的博客 632

MySQL存储过程

存储过程(Stored Procedure)也成为存储程序,是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。即预先编辑好SQL语句的集合,这个集合完成了某项具体的功能集合,需要这个功能的时候,只要调用这个过程就好。在业务开发工过程中,一般不要求使用存储过程实现业务流程,编写的存储过程不方便调试和扩展,同时没有移植性。简单来说存储过程就是具有名字的一段代码,用来完成一个特定的功能。他和函数很像,但是他不是函数,MySQL 5.0 版本开始支持存储过程。存储函数的限制比较多,例如不能用临时表,只

weixin_49472648的博客 463

CAD图纸智能搜索三大突破:图纸秒搜技术、相似度匹配与AI语义搜索

CAD图纸作为核心资产,长期面临管理难题:传统全文检索需逐张打开图纸人工查找,效率低下;相似图纸匹配依赖人工比对,误差率高;非专业人员难以通过模糊描述精准定位图纸。针对这些问题,唯杰地图推出三项智能解决方案:一是基于现代化索引引擎的​​全文搜索​​,支持秒级检索图纸内的文字、图层、块名称等,并可多条件组合查询;二是​​相似度搜索​​,通过SIFT算法和深度学习提取几何特征与拓扑结构,实现高精度匹配;三是​​AI语义搜索​​,利用大模型解析自然语言指令(如“查找半径为10的红色圆”),直接定位目标图形。

vjmap的博客 1868

存储过程

存储过程 什么时存储过程 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。 存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。 存储过程的好处 由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。 一个存储过程在程序在网络中交互时可以替代

qq_45504065的博客 633

3GPP LTE/NR信道模型

CDL(Clustered Delay Line):簇延迟线模型,包括CDL-A、CDL-B、CDL-C三个用于NLOS的信道模型,以及CDL-D、CDL-E两个用于LOS的信道模型。

LinkEverything的博客 1万+

编程_三大编程思想:POP、OOP、AOP

简单介绍POP、OOP、AOP三大编程思想的区别和优缺点~

mikimo的博客 3895

MySQL数据库——学MySQL前,需要了解这些数据库专业术语

在学习MySQL之前,了解以下数据库专业术语可以帮助您更好地理解和学习数据库的基本概念和术语:

Itmastergo的博客 913

[最新]MapReduce综合应用案例 — 气象数据清洗

【代码】[最新]MapReduce综合应用案例 — 气象数据清洗。

M_inherit的博客 1014

Oracle存储过程语法和基本使用

前言 之前总结了mysql 的存储过程,这个Oracle 的存储过程语法有相似之处,但也有不同,所以就总结一下。 1、基本语法 1)基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 结构分析: 创建语句:create or replace procedure 存储过程名 如果没有or replace语

启迪思维,精进技术 2272

R语言glm函数构建二分类logistic回归模型、epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值

R语言glm函数构建二分类logistic回归模型(family参数为binomial)、使用epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值)

statistics+insight+vista+power 1397

采用了fluent模拟了平壁面结霜过程。udf,很经典,可以试试。

利用该模型作为FLUENT中的源项,模拟了在局部冷却下冷表面上的霜形成,以预测霜的形态、温度分布和霜的重量,结果与实验结果吻合良好。结果显示,霜首先围绕冷却块形成,然后逐渐向其他方向扩展,冷却块上方的霜密度最大。随着时间的推移,平均霜厚度逐渐增加,生长速率减慢,而平均霜密度随增长速率变快而增加。相变传递微观过程与机理、蒸发及冷凝换热、强化传热、高效传热管、热泵、制冷、节水节能新技术、电子元器件冷却、余热回收及梯级利用等。udf,很经典,可以试试。工程热物理、空调、热能、低温制冷、化工、物理等。

qq_15963745的博客 922

[SQL必知必会学习] 09 SQL存储过程

什么是存储过程 存储过程的英文是 Stored Procedure。 它的思想很简单, 就是 SQL 语句的封装。一旦存储过程被创建出来, 使用它就像使用函数一样简单, 我们直接通过调用存储过程名即可。 存储过程定义 定义一个存储过程: CREATE PROCEDURE 存储过程名称 ([参数列表]) BEGIN 需要执行的语句 END 使用 CREATE PR...

墨1024 446

AI:270-基于ASFF改进YOLOv8检测头的多尺度特征融合方法详解与实战

ASFF是一种基于自适应特征融合的策略,能够动态调整不同尺度特征的融合权重,适应场景中不同大小的目标。传统的YOLOv8检测头使用固定的特征融合策略,而ASFF则通过引入学习参数,使得网络能够根据输入图像的特征自适应地选择不同尺度特征的重要性。这一策略对于检测小目标或尺度变化大的目标具有显著优势。本文提出了一种改进YOLOv8检测头的新方法,通过引入自适应空间特征融合模块(ASFF),有效提升了多尺度目标检测的性能,特别是在小目标检测任务中的表现。

一键难忘的博客 3913

MySQL复习资料(七)——MySQL-存储过程

MySQL复习资料(七)——MySQL-存储过程 存储过程的概念 存储过程的创建与执行 创建存储过程示例 使用存储过程

红目香薰 1531

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MySQL学习(七)——存储过程

详细讲解MySQL的存储过程,包含存储过程的语法,定义系统变量、用户变量、局部变量,以及存储过程中的条件、循环等语句,以及游标的讲解

ifhuke的博客 2273

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

mysql实验七存储过程及函数_MySql的存储过程及函数

mysql> select * from myai;+----+--------+---------+| id | city | country |+----+--------+---------+| 1 | ??? | china || 2 | ?? | china || 3 | ?? | china || 4 | ?? | china...

weixin_39944375的博客 211

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MySQL实验七创建存储过程和函数

这里写自定义目录标题一 实验目的二 实验平台三 实验内容和要求3.1 创建存储过程3.2 查看存储过程3.3 修改存储过程3.4 删除存储过程3.5 创建函数3.6 查看函数3.7 删除函数 一 实验目的 掌握 MySQL 块结构、MySQL 的基本语法、MySQL 的流程控制语句; 掌握 MySQL 块中使用游标的方法; 掌握 MySQL 异常处理技术。 掌握存储过程、函数数据库对象的基本作用; 掌握存储过程、函数的建立、修改、查看、删除等操作 二 实验平台 操作系统: Windows 10; 数据

zinc1234596的博客 2758

mysql实验七存储过程及函数_MYSQL用法(七) 存储过程语法及实例

存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。--------------------基本语法--------------------一.创建存储过程create procedure sp_name()begin.........end二.调用存储过程1.基本语法:call sp_name()注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递三....

weixin_39922004的博客 465

MYSQL实训七——存储过程、函数与触发器

MYSQL实训七——存储过程、函数与触发器

zrjwxhn的博客 8043

MySQL基础总结(七) 存储过程和函数

MySQL基础总结(七) 存储过程和函数 文章目录MySQL基础总结(七) 存储过程和函数存储过程存储过程的创建储过程的调用存储过程的删除查看存储过程的信息函数函数的创建函数的调用查看函数删除函数查看函数删除函数 存储过程 概念 一组预先编译好的SQL语句集合(有点类似于批处理文件),比较适合做pill插入和更新 作用 提高代码的重用性 简化操作 减少编译次数,提高效率 存储过程的创建 ...

Alaskyed的博客 635

MYSQL(七)存储过程

存储过程和函数:类似JAVA中的方法 好处: 1、提高代码重用性 2、简化操作 存储过程 含义:一组预先编译好的SQL语句的集合,理解成批处理语句 1、提高代码的重用性 2、简化操作 3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 一、创建语法(需在命令提示框中创建) CREATE PROCEDURE 存储过程名(参数列表) BEGIN ...

ztt1985的专栏 166

mysql实验七存储过程及函数_<MySQL>入门七 存储过程和函数

--存储过程和函数/*存储过程和函数:类似java中的方法好处:1.提高代码的重用性2.简化操作*//*存储过程 含义:一组预先编译好的SQL语句的集合。理解成批处理语句1.提高代码的重用性2.简化操作3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率*/--创建存储过程CREATE PROCEDURE存储过程名(参数列表)BEGIN存储过程体(一组合法的SQL)END/*注意:1....

weixin_42499692的博客 235

MySQL数据库-实验七 存储过程实验

MySQL数据库-实验七 存储过程实验

CCSco4355 1522

Mysql系列(七)存储过程

1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控

898

mysql实验七存储过程及函数,进阶篇 - MySQL 存储过程和函数

1、CALL语句 列:CALL sp_name([parameter[,...]]);CALL语句调用一个先前使用CREATE PROCEDURE创建的程序。CALL语句可以用声明为OUT或INOUT参数的参数给它的调用者传回返回值。它也“返回”受影响的行数,客户端程序可以在SQL级别上通过调用ROW_COUNT()函数获得这个数,在C中是调用the mysql_affected_rows()这个...

weixin_39875842的博客 259

MySQL基础(七)——存储过程与函数

MySQL基础(七)——存储过程与函数 视频学习来源:MySQL_基础+高级篇- 数据库 -sql -mysql教程_mysql视频_mysql入门_尚硅谷; 作者:木子六日; sql版本:5.7.33; 文章目录MySQL基础(七)——存储过程与函数变量存储过程函数流程控制 变量 # 系统变量 # 可分为全局变量和会话变量 # 查看所有全局变量 SHOW GLOBAL VARIABLES; # 查看所有会话变量 SHOW SESSION VARIABLES; # 或者(一般来说不写global或者

Paul_1i的博客 227
上一篇: MySQL 数据库锁理论(六)
下一篇: Java 锁的优化策略 和 膨胀过程
Dim_Jerry
博客等级 码龄8年 14粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值