Oracle-PL/SQL中条件顺序判断

这篇具有很好参考价值的文章主要介绍了Oracle-PL/SQL中条件顺序判断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、IF语句

1.1IF-THEN 组合

1.2IF-THEN-ELSE 组合

1.3 IF-THEN-ELSIF 组合

1.4区别/注意

1.4.1IF-THEN-ELSIF 和 IF-THEN-ELSE 的区别

1.4.2注意

1.5嵌套 IF 语句

二、 CASE语句

2.1简单的CASE语句

2.2搜索型CASE语句

2.3嵌套的CASE语句

2.4区别


在 Oracle 数据库中,可以使用多种条件和顺序控制语句来实现程序流程的控制。下面将介绍PL/SQL的两类控制语句:条件控制语句和顺序控制语句。其中,条件控制语句赋予了代码能够根据条件改变执行流程的能力。IF-THEN-ELSE和CASE语句就可以实现条件控制。除了CASE语句外,还有CASE表达式,二者并不完全相同,CASE表达式在某些场合下可以取代IF和CASE语句。

一、IF语句

IF 语句用于控制程序流程,根据一个条件表达式的值来选择执行不同的代码块。它的基本语法格式如下:

if 条件1 then 要执行的语句;
...
[elsif 条件2 then 要执行的语句;]
...
[else 要执行的语句;]
end if;

那么根据上面的语法,可以将IF语句分为3种使用方法,如下表详情所示:

IF ..THEN..

END IF;

这是IF语句最简单的用法。IF和THEN之间的条件决定了在THEN和END IF之间的一系列语句是否会被执行。
如果条件部分的求值结果是FALSE或者NULL,这些代码
就不会执行。

IF ..THEN..

ELSE ..

END IF;

这种组合形式的IF语句实现了二选一的逻辑。根据对位于IF和THEN两个关键字之间的条件的求值结果,或者是THEN和ELSE之间的代码被执行,或者是ELSE和END IF之间的
代码被执行。总之,这两部分代码肯定有一个会被执行。

IF ..THEN.. ELSIF..

ELSE ..

END IF;

这是IF语句最后一个也是最复杂的使用形式。IF语句会
从一系列互斥条件中选择一个是TRUE的,然后执行该条
件关联的语句。如果是在Oracle9 i Database Release 1之后
的版本中使用这样的IF语句,应该考虑使用CASE语句。

注意:

IF 语句只能用于 PL/SQL 语言中,而不能直接用于 SQL 中。

1.1IF-THEN 组合

IF-THEN 组合是一种常见的条件控制结构,可以基于某个条件表达式的值来选择执行不同的代码块。IF-THEN 语句的基本语法格式如下:

IF condition 
THEN
     statement or block of statements;
END IF;

condition 是要判断的条件表达式,如果满足该条件,就会执行 THEN 代码块中的语句。

注意:

THEN 后面必须以 END IF 结尾,表示 IF-THEN 语句的结束。

这里举一个简单的例子来说明 IF-THEN 的用法。假设需要根据某一条件是否成立来输出不同的结果,那么可以使用 IF-THEN 语句来实现。例如,以下代码展示了如何判断一个数是否为偶数,并输出不同的结果:

DECLARE
    v_num NUMBER := 5;
BEGIN
    IF MOD(v_num, 2) = 0 THEN
        DBMS_OUTPUT.PUT_LINE('The number is even');
    END IF;
END;

在上述代码中,首先声明了一个变量 v_num 并将其赋值为 5。然后,通过 IF-THEN 语句来检查该变量是否为偶数,如果成立,则输出 The number is even

再比如一个示例,代码如下所示:

DECLARE
    x INTEGER := 7;
BEGIN
    IF x < 10 THEN
        DBMS_OUTPUT.PUT_LINE(x || ' is less than 10.');
    END IF;
END;

以上代码中,定义了一个整型变量 x,然后使用 IF-THEN 语句判断 x 是否小于 10,如果成立则输出 "7 is less than 10."。 

1.2IF-THEN-ELSE 组合

IF-THEN-ELSE 组合也是一种常见的条件控制结构,在 IF-THEN 的基础上增加了 ELSE 分支,可以在条件不成立时执行另外一段代码块。IF-THEN-ELSE 语句的基本语法格式如下:

IF condition THEN
    statement or block of statements;
ELSE
    statement or block of statements;
END IF;

如果 condition 条件表达式为真,则执行 THEN 代码块中的语句;否则将执行 ELSE 代码块中的语句。在这种情况下,ELSE 关键字后的句号(.)和 END IF 之间不需要有其他内容。

那么再举一个利用 IF-THEN-ELSE 语句来判断一个数是否为偶数的例子。与上一个IF-THEN 组合例子不同的是,在这里需要处理两种不同情况,分别输出两种不同的结果。代码示例如下:

DECLARE
    v_num NUMBER := 6;
BEGIN
    IF MOD(v_num, 2) = 0 THEN
        DBMS_OUTPUT.PUT_LINE('The number is even');
    ELSE
        DBMS_OUTPUT.PUT_LINE('The number is odd');
    END IF;
END;

在上述代码中,首先声明了一个变量 v_num 并将其赋值为 6。然后,通过 IF-THEN-ELSE 语句来检查该变量是否为偶数,如果成立,则输出 The number is even;否则输出 The number is odd

再比如这个示例,代码如下所示:

DECLARE
    score INTEGER := 87;
    grade CHAR(1);
BEGIN
    IF score >= 90 THEN
        grade := 'A';
    ELSE
        grade := 'B';
    END IF;
    DBMS_OUTPUT.PUT_LINE('The grade is ' || grade || ', and the score is ' || score || '.');
END;

以上代码中,定义了一个整型变量 score 和一个字符类型变量 grade,使用 IF-THEN-ELSE 语句根据 score 的分值来确定考试等级,并将结果保存到 grade 变量中。最后通过 DBMS_OUTPUT 输出结果:“The grade is B, and the score is 87.” 

1.3 IF-THEN-ELSIF 组合

IF-THEN-ELSIF 组合是在 IF-THEN 的基础上增加了一个或多个 ELSIF 分支,能够处理多个条件分支情况,并在每个分支中执行不同的代码块。IF-THEN-ELSIF 语句的基本语法格式如下:

IF condition1 THEN
    statement1;
ELSIF condition2 THEN
    statement2;
...
ELSIF conditionN THEN
    statementN;
ELSE
    statement or block of statements;
END IF;

其中 condition1condition2、...、conditionN 分别是要进行判断的多个条件表达式,如果第一个条件表达式不成立,则继续判断下一个条件表达式,直到所有条件都被检查过了为止。如果所有条件都不成立,则将执行 ELSE 分支中的代码块。

下面利用 IF-THEN-ELSIF 语句来实现多重分支控制的例子。

示例1.假设我们需要根据考试成绩来判断学生所处的等级,并输出相应的结果。代码示例如下:

DECLARE
    v_score NUMBER := 75;
BEGIN
    IF v_score >= 90 THEN
        DBMS_OUTPUT.PUT_LINE('Grade A');
    ELSIF v_score >= 80 THEN 
        DBMS_OUTPUT.PUT_LINE('Grade B');
    ELSIF v_score >= 70 THEN 
        DBMS_OUTPUT.PUT_LINE('Grade C');
    ELSIF v_score >= 60 THEN 
        DBMS_OUTPUT.PUT_LINE('Grade D');
    ELSE 
        DBMS_OUTPUT.PUT_LINE('Grade E');
    END IF;
END;

以上代码使用 IF-THEN-ELSIF 语句实现了根据考试成绩来判断学生所处的等级,并输出相应的结果。根据分数的不同,执行相应的分支并输出对应的成绩等级。

  • 如果 v_score 大于等于 90,则执行 IF 分支,输出 "Grade A";
  • 如果 v_score 在 80 到 89 之间,则执行第一个 ELSIF 分支,输出 "Grade B"; 依次类推,判断学生的成绩等级。
  • 如果 v_score 小于 60,则执行 ELSE 分支,输出 "Grade E"。
  • 最后输出结果为 "Grade C",因为 v_score 等于 75,符合条件 v_score >= 70 且 v_score < 80,所以执行第二个 ELSIF 分支并输出 "Grade C"。

示例2.代码如下所示:

DECLARE
    num INTEGER := 5;
BEGIN
    IF num = 0 THEN
        DBMS_OUTPUT.PUT_LINE(num || ' is zero.');
    ELSIF num > 0 THEN
        DBMS_OUTPUT.PUT_LINE(num || ' is a positive number.');
    ELSE
        DBMS_OUTPUT.PUT_LINE(num || ' is a negative number.');
    END IF;
END;

以上代码中,定义了一个整型变量 num,使用 IF-THEN-ELSIF 语句判断 num 是否是 0、正数或负数,并输出相应的结果。如果 num 不属于上述任何一种情况,则执行 ELSE 分支的语句。最终输出 "5 is a positive number."

示例3.依旧判断正负数,要求是键盘输入一个数,如果大于0,打印正数,小于0,打印负数,等于零,打印零。代码如下所示:

begin
  if &a>0 then
    dbms_output.put_line('&a 是正数');
  elsif &a<0 then
    dbms_output.put_line('&a 是负数');
  else
    dbms_output.put_line('&a 是零');
  end if;
end;

注释:

在Oracle数据库中,&符号用于参数替换功能,可以用于几乎所有版本的Oracle数据库,包括Oracle 8i、9i、10g、11g、12c等版本。在不同的版本中,&符号的使用方式可能会有所不同。

它可以用来在SQL语句中引用用户输入的参数值。当你在SQL语句中使用&符号时,Oracle会提示你输入一个值,然后将该值替换掉&符号。

例如,你可以使用如下的SQL语句来查询指定员工的工资:

SELECT salary FROM employees WHERE employee_id = &emp_id;

当执行这个SQL语句时,Oracle会提示你输入一个员工ID的值,然后将该值替换掉&emp_id。这样就能查询指定员工的工资了。

但是在使用&符号时,如果用户输入的值中包含了单引号、双引号等特殊字符,可能会导致SQL语句执行失败。为了避免这种情况,可以使用两个&符号(&&)来进行参数替换,这样Oracle会自动对特殊字符进行转义处理。例如:

SELECT * FROM employees WHERE department_name = '&&dept_name';

其实这个符号在分页查询的这篇文章中第一小节也有使用到了该符号,详情请看http://t.csdn.cn/S0G1P

示例4.从键盘输入一个员工编号,如果他的工资大于2999,打印'该员工是高薪人士';
大于1999,打印'该员工是中薪人士';大于999,打印'该员工是低薪人士';否则,打印'我不认识该员工' ;代码如下所示:

declare
v_sal number;
begin
  select sal into v_sal from emp where empno=&a;
  if v_sal>2999 then
    dbms_output.put_line(&a||'该员工是高薪人士');
  elsif v_sal>1999 then
    dbms_output.put_line(&a||'该员工是中薪人士');
  elsif v_sal>999 then
    dbms_output.put_line(&a||'该员工是低薪人士');
  else dbms_output.put_line(&a||'你不配');
  end if;
end;

1.4区别/注意

1.4.1IF-THEN-ELSIF 和 IF-THEN-ELSE 的区别

  • IF-THEN-ELSE 语句只有一个 ELSE 分支,如果条件不符合,则会执行 ELSE 分支中的代码;
  • IF-THEN-ELSIF 语句可以有多个 ELSIF 分支,可以对多个条件进行判断;
  • IF-THEN-ELSIF 主要用于多重条件判断,而 IF-THEN-ELSE 则用于单一条件情况下的处理;
  • IF-THEN-ELSIF 允许在条件不满足时再次对代码进行评估或检查,从而实现更加灵活和复杂的条件控制操作。

1.4.2注意

  • 一个IF总要有一个匹配的END IF;
  • 在 IF 语句中进行 NULL 值比较,应该使用 IS NULL 或 IS NOT NULL 运算符;
  • 在关键字END 和IF之间一定要有空格;
  • 关键字ELSIF不要加[E]。

1.5嵌套 IF 语句

IF 语句可以嵌套使用,以实现更复杂的条件逻辑。嵌套 IF 语句根据条件执行不同的代码块,每个代码块可能包含其他的嵌套 IF 语句。

IF 语句的一般格式如下:

IF condition THEN
  statement1;
  --...
ELSE
  statement2;
  --...
END IF;

其中,condition 是一个逻辑表达式,如果为真,则执行 statement1,否则执行 statement2。在嵌套 IF 语句中,statement1statement2 可以是嵌套的 IF 语句。

以下是一个简单的嵌套 IF 语句的示例:

DECLARE
   i number := 70;
BEGIN
   IF (i >= 0 AND i <= 50) THEN
      DBMS_OUTPUT.PUT_LINE('分数不及格');
   ELSE
      IF (i > 50 AND i <= 70) THEN
         DBMS_OUTPUT.PUT_LINE('分数及格');
      ELSE
         IF (i > 70 AND i <= 90) THEN
            DBMS_OUTPUT.PUT_LINE('分数良好');
         ELSE
            DBMS_OUTPUT.PUT_LINE('分数优秀');
         END IF;
      END IF;
   END IF;
END;

此示例使用了三个嵌套 IF 语句来根据给定的分数打印出相应的评价,它们依次判断分数是否不及格、及格、良好或优秀,并输出相应的信息。该示例中所有的 IF 语句都是紧密嵌套在一起的,它们可以使用 ELSEIF 关键字改写成更清晰的形式。

注意:

嵌套 IF 语句可以很方便地构造复杂的条件逻辑,但深度太深或太复杂的嵌套可能会影响代码的可读性和维护性。因此,在编写嵌套 IF 语句时,应该尽量使用合适的结构、注释和命名来使代码更加易懂。

二、 CASE语句

CASE 语句是一种强大的条件表达式,可以在一个 SQL 语句中根据一个或多个条件执行不同的操作。

2.1简单的CASE语句

它的一般格式如下:

CASE expression
   WHEN value1 THEN statement1;
   WHEN value2 THEN statement2;
   ...
   ELSE statementN;
END CASE;

其中,expression 是需要比较的表达式,value1, value2, ... 是表达式可能取到的值,如果 expression 的值等于某个 value,则执行相应的 statement;否则执行 ELSE 后面的语句。

注意:

CASE 语句中的条件顺序很重要,因为 Oracle 将按顺序执行每个 WHEN 子句,并在找到第一个匹配值后立即停止。

在没有 ELSE 的情况下,如果在所有的 WHEN 分支中都没有找到匹配的值,则该 CASE 表达式将返回空值 NULL。

一个简单的 CASE 语句示例:

DECLARE
   grade CHAR(1) := 'B';
BEGIN
   CASE grade
      WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('优秀');
      WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('良好');
      WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('中等');
      WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE('及格');
      ELSE DBMS_OUTPUT.PUT_LINE('不及格');
   END CASE;
END;

该示例使用 CASE 语句来根据给定的分数打印出相应的评价。它首先比较 grade 和每个可能的值,并在找到匹配值后输出相应的消息。如果没有匹配项,则输出 "不及格"。

2.2搜索型CASE语句

它的格式如下所示:

case when 条件1 then 要执行的语句;
     when 条件2 then 要执行的语句;
     ...
[else 要执行的语句;]
end case;

示例1.键盘输入一个字符,如果是大写字母,打印'大写字母';小写打印'小写字母'  ,否则打印'我不认识',代码如下:

declare
v1 char:='&a';
begin
case when V1 between 'A' and 'Z' then 
          dbms_output.put_line('大写字母');
     when V1 between 'a' and 'z' then 
          dbms_output.put_line('小写字母');
     else dbms_output.put_line('我不认识');
end case;
end;

示例2.从键盘上输入一个员工编号
如果他的名字的首字母是A,B,C,D,E之中的一个,打印1;
如果他的名字的首字母是F,G,H,I,J之中的一个,打印2;
如果他的名字的首字母是K,L,M,N,O之中的一个,打印3;
如果他的名字的首字母是P,Q,R,S,T之中的一个,打印4;
否则,打印5。

declare
v1 varchar2(20);
begin
  select substr(ename,1,1) into v1 from emp where empno=&a;
case when v1 between 'A' and 'E' then
          dbms_output.put_line(1);
     when v1 between 'F' and 'J' then
          dbms_output.put_line(2);
     when v1 between 'K' and 'O' then
          dbms_output.put_line(3);
     when v1 between 'P' and 'T' then
          dbms_output.put_line(4);
     else dbms_output.put_line(5);
 end case;
end;

2.3嵌套的CASE语句

当需要根据一个或多个条件组合来处理非常特定的情况时,可以使用嵌套 CASE 语句。它允许在一个 WHEN 子句中包含另一个 CASE 子句。

以下是一个示例,展示如何使用嵌套 CASE 语句:

DECLARE 
   score NUMBER := 88;
BEGIN 
   CASE 
      WHEN score >= 90 THEN -- 外层 CASE 子句
         CASE  
            WHEN score = 100 THEN DBMS_OUTPUT.PUT_LINE('完美成绩!'); -- 内层 CASE 子句
            ELSE DBMS_OUTPUT.PUT_LINE('优秀'); -- 内层 CASE 子句
         END CASE; 
      WHEN score >= 80 THEN DBMS_OUTPUT.PUT_LINE('良好');
      WHEN score >= 60 THEN DBMS_OUTPUT.PUT_LINE('及格');
      ELSE DBMS_OUTPUT.PUT_LINE('不及格');
   END CASE;
END;

该示例根据分数 score 输出一个相关的评价。

如果分数>= 90,则会触发外层 CASE 语句,并判断内层 CASE 子句是否成立;

如果分数>= 80,则直接输出 "良好",以此类推。

注意:CASE 子句也可以无限嵌套。

2.4区别

对于sql中的 case when 和pl/sql中的case when 有什么区别?

Ⅰ、从简单的视觉感官上可以发现的不同有如下:

  • 1.sql中的case when 是一个列(值),plsql中的case when是条件判断
  • 2.sql中的case when 内部不能加分号,plsql中的case when 每一个要执行的语句后都要加分号
  • 3.sql中的case when 以end 结尾,plsql中的case when 以end case 结尾
  • 4.sql中的case when 不能加dml,plsql中的case when 可以加dml

Ⅱ、从使用方式、范围和功能方面定义理解的不同有如下:

  • 1.语法不同:在 SQL 中,CASE WHEN 始终作为单独的语句出现,在 SELECT 语句中起到转换数据的作用;而在 PL/SQL 中,则与其他控制结构(如 IF 语句)一起使用,可以操作变量并控制程序流程。

  • 2.语句位置不同:在 SQL 中,CASE WHEN 只能用于查询过滤和结果集转换,而不能用于数据更新或删除;但在 PL/SQL 中,CASE WHEN 可以嵌套于其他表达式或语句之中,来实现更复杂的逻辑操作。

  • 3.功能不同:在 SQL 中,CASE WHEN 主要用于条件过滤、计算衍生列、排序等场景;而在 PL/SQL 中,则可以用于更高级的控制逻辑,包括比较、循环、异常处理、函数返回值等。

  • 4.返回类型不同:在 SQL 中,CASE WHEN 的返回值必须一致,且仅能返回单个值;而在 PL/SQL 中,其可以返回多种类型数据,例如字符型、数字型、日期型、表等。文章来源地址https://www.toymoban.com/news/detail-469144.html

到了这里,关于Oracle-PL/SQL中条件顺序判断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ORACLE数据库 —— PL/SQL知识点2

    ORACLE数据库  PL/SQL语句基础知识点  适合有SQL基础的人群。  禁止转载! 内置函数 字符串函数     lower(列名|字符串)函数用于返回字符串的小写形式。         eg.SELECT ename,sal FROM emp WHERE ename=lower(\\\'ename\\\');     upper(列名|字符串)函数用于返回字符串的大写形式。       

    2024年02月08日
    浏览(50)
  • Oracle/PL/SQL数据库基础操作(持续更新)

            PL/SQL不是一个独立的编程语言;它是Oracle编程环境中的工具。 SQL* Plus是一个互动的工具,它可以在命令提示符下键入SQL和PL/SQL语句。这些命令发送到数据库进行处理。语句处理之后将结果发回,并在屏幕上显示出来。 分类 命令 DDL create:创建;drop:删除;alter:

    2024年02月09日
    浏览(59)
  • 用PL/SQL Developer连接远程Oracle数据库

    oracle数据库安装教程参考 注意: 第六步中的Oracle基目录中的用户名为中文的话,需要去掉中文部分。然后管理口令一定保存好。 2.打开oracle安装目录(默认在C盘,我的在D盘),找到tnsnames.ora文件 这是oracle客户端所需要的一个文件,通过该文件可以配置数据库的连接地址,

    2024年02月13日
    浏览(42)
  • Oracle开发和应用——PL/SQL语法2(游标及集合)

    6.4.6.  游标 这里的游标 (cursor) ,是指数据库开发中的游标,而且,这里所指的是显式定义的游标。因为,除了显式定义的游标,我们每条SQL语句也会隐式的定义、打开和关闭一个游标,其实质是一个带有指针的结果集。当我们按照顺序取出结果时,这个指针会按照从前到

    2024年02月22日
    浏览(42)
  • Oracle PL/SQL基础语法学习13:比较运算符

    Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) 比较运算符是 PL/SQL 语言中的基本元素之一,它们被用于

    2024年02月05日
    浏览(49)
  • PL/SQL+cpolar公网访问内网Oracle数据库

    Oracle,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据

    2024年02月08日
    浏览(40)
  • PL/SQL Developer15和Oracle Instant Client安装配置

    Oracle Instant Client Downloads | Oracle 中国 PL/SQL Developer - Allround Automations Free trial - Allround Automations 一路默认下一步。 选择输入许可信息: 产品码: 4tqw83ltw4ustkjfftny7wjl7tqv9uscs8 序列号: 182522 密码: *************  一路默认下一步,直到安装完成。 解压到自己喜欢的位置即可。 Oracl

    2024年02月12日
    浏览(42)
  • 【数据库】日常使用PL/SQL 登录ORACLE 数据库查询数据

    一、PL/SQL 登录方式 username: ##访问数据库的账号 password: ##访问数据库的密码 Databse: ##数据库IP地址/实例名 数据库集群心跳地址/实例名 Connect as : ##Normal,如果使用sysdba账户登录选择SYSDBA 二、PL/SQL使用SQL语句查询 点击上方导航栏,New,选择SQL Window,即可再次输入要查询的

    2024年02月19日
    浏览(68)
  • Oracle PL/SQL Programming 第5章:Iterative Processing with Loops 读书笔记

    总的目录和进度,请参见开始读 Oracle PL/SQL Programming 第6版 本章探讨 PL/SQL 的迭代控制结构(也称为循环),它允许您重复执行相同的代码。 PL/SQL 提供了三种不同类型的循环结构: 简单或无限循环 FOR 循环(数字和游标) WHILE 循环 每种类型的循环都是针对特定目的而设计:

    2024年02月20日
    浏览(31)
  • 教你如何通过内网穿透轻松实现PL/SQL远程连接Oracle数据库【内网穿透】

    转发自CSDN远程穿透的文章:公网远程连接Oracle数据库【内网穿透】 Oracle,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、

    2024年02月03日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包