2024-03-19  阅读(3)
原文作者:吴声子夜歌 原文地址: https://blog.csdn.net/cold___play/article/details/100810752
什么是PL/SQL?

PL/SQL(Procedure Language/SQL)是Oracle对sql语言的过程化扩展,指在SQL命令语言种增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。把SQL语言的数据操纵能力与过程语言的数据处理能力结合起来,使得PLSQL面向过程但比过程语言简单、高效、灵活和实用。

示例:为职工涨工资,每人涨10%的工资。

    update emp set sal = sal * 1.1;

示例:按职工的职称涨工资,总裁涨1000元,经理涨800元,其他人员涨400元。

这样的需求我们就无法使用一条SQL来实现,需要借助其他程序来帮助完成,也可以使用pl/sql。

PL/SQL的语法
    declare
    	说明部分(变量说明,光标声明,例外说明)
    begin
    	语句序列(DML语句)...
    exception
    	列外处理语句
    End;
    /
变量和变量的定义
  • 说明变量(char, varchar2, date, number, boolean, long)

    202403192030081471.png

  • 引用变量

    Myname emp.ename%type;

引用型变量,即my_name的类型与emp表种ename列的类型一样
在sql种使用 i n t o \color{red}{into} into

    declare
    	emprec emp.ename%type;
    begin
    	select t.ename into emprec from emp t where t.empno = 7369;
    	dbms_output.put_line(emprec);
    end;
  • 记录型变量
    Emprec emp%rowtype

记录变量分量的引用

    emp_rec.ename := 'ADAMS';
    declare
    	p emp%rowtype;
    begin
    	select * into p from emp t where t.empno = 7369;
    	dbms_output.put_line(p.ename || ' ' || p.sal);
    end;

202403192030084822.png

If语句

语法1:

    IF 条件 THEN 语句1:
    	语句2:
    END IF;

语法2:

    IF 条件 THEN 语句序列1:
    	ELSE 语句序列2:
    END IF;

语法3:

    IF 条件 THEN 语句:
    	ELSIF 语句序列2:
    	ELSE 语句:
    END IF;

示例1:如果从控制台输入1则输出我是1

    declare
    	pnum number := #
    begin
    	if pnum = 1 then
    		dbms_output.put_line('我是1');
    	end if;
    end;

示例2:如果从控制台输入1则输出我是1,否则输出我不是1

    declare
      mynum number := #
    begin
      if mynum = 1 then
        dbms_output.put_line('我是1');
      else
        dbms_output.put_line('我不是1');
      end if;
    end;

示例3:判断人的不同年龄段,18岁以下是未成年人,18以上40以下是中年人,40以上是老年人

    declare
      mynum number := #
    begin
      if mynum < 18 then
        dbms_output.put_line('未成年人');
      elsif mynum >= 18 and mynum < 40 then
        dbms_output.put_line('中年人');
      elsif mynum > 40 then
        dbms_output.put_line('老年人');
      end if;
    end;
循环

语法:

202403192030088223.png示例1:使用语法1输出1到10的数字

    declare
      step number := 1;
    begin
      while step <= 10 loop
        dbms_output.put_line(step);
        step := step + 1;
      end loop;
    end;

202403192030092734.png
示例2:使用语法2输出1到10的数字

    declare
      step number := 1;
    begin
      loop
        exit when step > 10;
        dbms_output.put_line(step);
        step := step + 1;
      end loop;
    end;

示例3:使用语法3输出1到10的数字

    declare
      step number := 1;
    begin
      for step in 1 .. 10 loop
        dbms_output.put_line(step);
      end loop;
    end;

Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文