Oracle--PL/SQL基本语法、判断、循环

我会带着你远行 2021-08-13 16:01 440阅读 0赞

什么是PL/SQL?

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

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

  1. update emp set sal = sal * 1.1;

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

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

PL/SQL的语法

  1. declare
  2. 说明部分(变量说明,光标声明,例外说明)
  3. begin
  4. 语句序列(DML语句)...
  5. exception
  6. 列外处理语句
  7. End
  8. /

变量和变量的定义

  • 说明变量(char, varchar2, date, number, boolean, long)
    在这里插入图片描述
  • 引用变量

    Myname emp.ename%type;

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

  1. declare
  2. emprec emp.ename%type;
  3. begin
  4. select t.ename into emprec from emp t where t.empno = 7369;
  5. dbms_output.put_line(emprec);
  6. end;
  • 记录型变量

    Emprec emp%rowtype

记录变量分量的引用

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

在这里插入图片描述

If语句

语法1:

  1. IF 条件 THEN 语句1
  2. 语句2
  3. END IF

语法2:

  1. IF 条件 THEN 语句序列1
  2. ELSE 语句序列2
  3. END IF

语法3:

  1. IF 条件 THEN 语句:
  2. ELSIF 语句序列2
  3. ELSE 语句:
  4. END IF

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

  1. declare
  2. pnum number := #
  3. begin
  4. if pnum = 1 then
  5. dbms_output.put_line('我是1');
  6. end if;
  7. end;

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

  1. declare
  2. mynum number := #
  3. begin
  4. if mynum = 1 then
  5. dbms_output.put_line('我是1');
  6. else
  7. dbms_output.put_line('我不是1');
  8. end if;
  9. end;

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

  1. declare
  2. mynum number := #
  3. begin
  4. if mynum < 18 then
  5. dbms_output.put_line('未成年人');
  6. elsif mynum >= 18 and mynum < 40 then
  7. dbms_output.put_line('中年人');
  8. elsif mynum > 40 then
  9. dbms_output.put_line('老年人');
  10. end if;
  11. end;

循环

语法:
在这里插入图片描述示例1:使用语法1输出1到10的数字

  1. declare
  2. step number := 1;
  3. begin
  4. while step <= 10 loop
  5. dbms_output.put_line(step);
  6. step := step + 1;
  7. end loop;
  8. end;

在这里插入图片描述
示例2:使用语法2输出1到10的数字

  1. declare
  2. step number := 1;
  3. begin
  4. loop
  5. exit when step > 10;
  6. dbms_output.put_line(step);
  7. step := step + 1;
  8. end loop;
  9. end;

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

  1. declare
  2. step number := 1;
  3. begin
  4. for step in 1 .. 10 loop
  5. dbms_output.put_line(step);
  6. end loop;
  7. end;

发表评论

表情:
评论列表 (有 0 条评论,440人围观)

还没有评论,来说两句吧...

相关阅读