PL/SQL基础

一.什么是PL/SQL?

1.定义
PL/SQL也是一种程序语言,称为过程化SQL语言。PL/SQL是Oracle数据库对SQL语句的扩展。普通SQL只是一条语句完成简单的查询,数据操作的功能,PL/SQL是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。

2.什么是匿名块
由多条SQL语句组成的完成一定功能的一个语句块,主要用于调用存储过程和函数。相对于有名字的程序块有:存储过程、函数、触发器等。

3.PL/SQL语法

  declare
  --declare和begin之间为声明部分
  begin
  --begin和end之间为语句执行部分
  exception
  --exception为异常处理部分
  end;

4.PL/SQL变量

标量型变量:单一类型,不存在组合;
复合型变量:由几种单一类型组成的一个结构体(集合,数组,容器);
记录类型:由rowtype定义,语法:表名称%rowtype,只接收一条记录;
索引表类型:由type定义,语法:type 类型名称 is type of 数据类型 index by pls_integer;索引表下标从1开始,而不是从0开始。

5.扩展:记录类型(record)和使用%rowtype定义的数据类型

Oracle中的记录类型(record)和使用%rowtype定义的数据类型都是一种单行多列的数据结构,可以理解为一个具有多个属性的对象。其中属性名即为列名。

(1)记录类型(record)

  记录类型是一种由单行多列的标量构成的复合结构,将一个或多个标量封装成一个对象,可以看做是一种用户自定义数据类型。

  用法:
    1.声明记录名
    type 记录名 is record(
      filed1 type1[not null][:=expr1]
      [,filed2 type2[not null][:=expr2,.....]
    );
    not null表示不能为空。

    2.声明记录类型的变量

      变量名 记录名;

    3.向变量中插入数据
      有很多方法都能插入数据,可以直接变量名.filed1 := 值;也可以使用select...into....语句(Oracle的select...into....只能对单行数据进行操作)。
      例:select 列名1,列名2 into 变量名 from 表名 where 条件。

    4.访问记录成员
      变量名.filed。

  记录类型的运算:

    1.记录赋值,同一记录类型的变量可直接赋值。
      变量1 := 变量2;

    2.记录比较,记录不可以整体比较,只能比较记录的字段。

    3.记录不可以整体判断为空,只能判断记录字段。

(2)使用%rowtype定义的数据类型

  定义一个表示表中一行数据的变量。该变量的列名、数据类型都与数据表相同。

  存取数方式为:变量名.列名;

  用法:

    1.声明变量
      变量名 表名%rowtype;

    2.赋值
      a.每列单独赋值:变量名.列名:= 值;
      b.select...into...语句赋值:select * into 变量名 from 表名;

    3.取值
      变量名.列名。

(3)使用记录类型和%rowtype向表中更新数据

  更新单行记录可使用记录类型和%rowtype,使用这种方式的前提是记录类型或%rowtype中的列和表中的列完全匹配。直接使用关键字row和记录类型或%rowtype类型的变量。

  语法:
    update 表名 set row = 变量名 where 条件;

posted @ 2020-11-30 21:20  Shmily_blog  阅读(95)  评论(0编辑  收藏  举报