加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle数据类型

发布时间:2020-12-12 16:32:45 所属栏目:百科 来源:网络整理
导读:数据类型本质上是一种用于描述数据存储的内存结构,用它来决定变量中所存储数据的类型。 1、基本数据类型 与其他编程语言一样,PL/SQL语言也是有多中数据类型,这些数据类型能够满足在编写PL/SQL程序过程中定义变量和常量。 1.1 数值类型 数值类型主要包括NU

数据类型本质上是一种用于描述数据存储的内存结构,用它来决定变量中所存储数据的类型。

1、基本数据类型

与其他编程语言一样,PL/SQL语言也是有多中数据类型,这些数据类型能够满足在编写PL/SQL程序过程中定义变量和常量。

1.1 数值类型

数值类型主要包括NUMBER、PLS_INTEGER、BINARY_INTEGER这3中基本类型。其中,NUMBER类型的变量可以存储整数或者浮点数;而PLS_INTEGER、BINARY_INTEGER类型的变量只存储整数。

NUMBER类型还可以通过NUMBER(P,S)的形式来格式化数字,其中,参数P表示精度,参数S表示刻度范围。

【实例】声明一个精度为9,且刻度范围为2的表示金额的变量Num_Money。
declare
    Num_Money NUMBER(9,2);
begin
    Num_Money := 18.128;
    DBMS_OUTPUT.PUT_LINE('价格为:'||Num_Money);   --输出:价格为:18.13     
end;

1.2 字符类型

字符类型主要包括VARCHAR2、CHAR、LONG、NCHAR和NVARCHAR2等。这些类型。

(1)VARCHAR2类型:用于存储可变长度的字符串,其语法格式VARCHAR2(maxlength),参数maxlength的最大值可以是32767字节。

注意:数据库类型的VARCHAR2的最大长度是4000字节,所以一个长度大于4000字节的PL/SQL类型VARCHAR2变量不可以赋值给数据库中的一个VARCHAR2变量,而只能赋值给LONG类型的数据库变量。

(2)CHAR类型:CHAR类型表示指定长度的字符串,其语法格式CHAR(maxlength)。

(3)LONG类型:LONG类型表示一个可变的字符串,最大长度是32767字节,而数据库类型的LONG最大长度可达2GB,所以任何字符串变量都可以赋值给它。

(4)NCHAR和NVARCHAR2类型:这两种数据类型的长度要根据国字符集来确定,只能具体情况具体分析。

1.3 日期类型

日期类型只有一种——DATE类型,用来存储日期和时间信息,DATE类型的存储空间是7个字节,分别使用一个字节存储世纪、年、月、天、小时、分钟和秒。

1.4 布尔类型

布尔类型也是只有一种——BOOLEAN类型,只要用于存储的流程控制和业务逻辑判断,其变量值可以是TRUE、FALSE或NULL中的一种。

2、特殊数据类型

为了提高用户的编程效率和解决复杂的业务逻辑需求,PL/SQL语言除了可以使用Oracle规定的基础数据类型外,还提供了3种特殊的数据类型,但这3种类型仍然是建立在基本数据类型基础之上的。

2.1 %TYPE类型

使用%TYPE关键字可以声明一个与指定列名称相同的数据类型,它通常紧跟在指定列名的后面。

【实例】声明一个与emp表中job列的数据类型完全相同的变量var_job,代码如下。

declare
    var_job emp.job%type;

【实例】在SCOTT模式下,使用%TYPE类型的变量输出emp表中编号为7369的员工名称和职务信息,代码如下。

declare
    var_ename emp.ename%type;    --声明与ename列类型相同的变量
    var_job emp.job%type;        --声明与job列类型相同的变量
begin
  select ename,job
  into var_ename,var_job
  from emp
  where empno=7369;              --检索数据,并保存在变量中
  dbms_output.put_line(var_ename||'的职务是'||var_job);
end;

2.2 RECORD类型

单词RECORD有“记录”之意,因此RECORD类型也称作“记录类型”,使用该类型的变量可以存储由多个列值组成的一行数据。在声明记录类型变量之前,首先需要定义记录类型,然后才可以声明记录类型的变量。记录类型是一种结构化的数据类型,它使用type语句进行定义,在记录类型的定义结构中包含成员变量及其数据类型,其语法格式如下:

type record_type is record
(
	var_member1 data_type [not null] [:=default_value],…
	var_membern data_type [not null] [:=default_value]
)

record_type:表示要定义的记录类型名称。

var_member1:表示该记录类型的成员变量名称。

data_type:表示成员变量的数据类型。

【实例】声明一个记录类型emp_type,然后使用该类型的变量存储emp表中的一条信息,并输出这条记录信息,代码如下。

declare
  type emp_type is record           --声明record类型emp_type
  (
       var_ename emp.ename%type,--定义字段/成员变量
       var_job emp.job%type,var_sal emp.sal%type
  );
  empinfo emp_type;                 --定义变量
begin
  select ename,job,sal
  into empinfo
  from emp
  where empno = 7369;
  /*输出雇员信息*/
  dbms_output.put_line('雇员名称:'||empinfo.var_ename||' 职务:'||empinfo.var_job||' 工资:'||empinfo.var_sal);
end;

2.3 %ROWTYPE类型

%ROWTYPE类型的变量结合了%TYPE类型和RECORD类型变量的优点,它可以根据数据表中行的结构定义一种特殊的数据类型,用来存储从数据表中检索到的一行数据。它的语法形式很简单,如下所示:

rowVar_name table_name%rowtype;

rowVar_name:表示可以存储一行数据的变量名。

table_name:指定的表明。

【实例】声明一个%ROWTYPE类型的变量rowVar_emp,然后使用该变量存储emp表中的一行数据,代码如下。

declare
  rowVar_emp emp%rowtype;   --定义能够存储emp表中一行数据的变量rowVar_emp
begin
  select * 
  into rowVar_emp
  from emp
  where empno=7369;
  /*输出雇员信息*/
  dbms_output.put_line('雇员名称:'||rowVar_emp.ename||' 职务:'||rowVar_emp.job||' 工资:'||rowVar_emp.sal);
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读