标量数据类型

标量数据类型的变量只有一个值,且内部没有分量。标量数据类型包括数字型,字符型,日期型和布尔型。这些类型有的是 Oracle SQL 中有的数据类型,有的是 PL/SQL 自身附加的数据类型。

1、数值类型:主要用来存储数值类型的数据。常用的有NUMBER、PLS_INTEGER、BINARY_INTEGER和SIMPLE_INTEGER类型。

  • NUMBER:可以存储小数和整数类型数据,格式为NUMBER(p,s),其中p表示的是精度(既是位数的长度),s表示的是小数点后的位数。例如:number(3,2)表示的范围-9.99—9.99。
  • PLS_INTEGER、BINARY_INTEGER、SIMPLE_INTEGER:主要用来存储整数类型,它们存储整数的范围都是-(2^31)…(2^31-1)。但是BINARY_INTEGER发生内存溢出的时候会给它分配一个number类型的数据,而PLS_INTEGER会直接抛异常报错,SIMPLE_INTEGER是PLS_INTEGER的一个子类型,它不允许存在NULL值数据。

2、字符类型:用来存储单个字符或字符串。

  • CHAR类型:固定长度的字符串,CHAR(n):默认长度是1,当字符串长度小于n时,会自动右补空格,所以在取数据的时候要注意补空格。
  • VARCHAR2类型:该类型存储可变长度的字符串VARCHAR2(n),最大存储的长度为4000个字节。当字符串长度小于n时,不会补齐空格。
  • LONG类型:该类型存储可变长度的字符串,不同于VARCAHR2类型,它对于字段的存储长度可达2G,但是作为PL/SQL变量,和VARCHAR2一样,只能存储最大32767字节。

3、时间类型:主要和SQL中的时间类型一致,有DATE和TIMESTAMP两种时间类型。

4、布尔类型:PL/SQL程序中的逻辑判断的值有:TRUE、FALSE、NULL值。

引用数据类型

引用数据类型是PL/SQL程序语言特有的数据类型,是用来引用数据库当中的某一行或者某个字段作为数据类型的声明。其中有两种引用类型:%TYPE和%ROWTYPE。

%TYPE类型:

引用数据库中表的某列的类型作为某变量的数据类型,也可以直接引用PL/SQL程序中某个变量作为新变量的数据类型。例:

  1. declare
  2. ls_stuname stuinfo.stuname%type;--通过学生姓名字段声明ls_stuname
  3. begin
  4. select t.stuname into ls_stuname
  5. from student.stuinfo t
  6. where t.stuid = 'SC201801006';
  7. dbms_output.put_line(ls_stuname);
  8. exception
  9. when no_data_found then
  10. dbms_output.put_line('该学生在学生信息表中找不到');
  11. end;
% ROWTYPE 类型

%ROWTYPE类型是PL/SQL程序引用数据库表中的一行作为数据类型,即 RECORD 类型(记录类型)表示一条数据记录。类似java程序当中的对象的实例。可以使用“.”来访问记录中的属性。例:

  1. declare
  2. ls_stuinfo stuinfo%rowtype;
  3. xsjbxx varchar2(50);
  4. begin
  5. select t.* into ls_stuinfo
  6. from stuinfo t
  7. where t.stuid='SC201801006';
  8. xsjbxx:='姓名:' ||ls_stuinfo.stuname || ' 学号:' ||ls_stuinfo.stuid || ' 年龄:' ||ls_stuinfo.age;
  9. dbms_output.put_line(xsjbxx);
  10. exception
  11. when no_data_found then
  12. dbms_output.put_line('该学生在学生信息表中找不到');
  13. end;
文档更新时间: 2020-10-20 10:24   作者:张尚