oracle变量(2)

1.NUMBER

NUMBER类型既可以表示整数,也可以表示浮点数,格式如下:

NUMBER [ (precision , scale) ]

精度:所允许数值的总长度,也就是数值中所有数字位的个数,最大值为38.

刻度:刻度用来确定小数位数,同时也确定在什么地方进行舍入。当刻度是正数时,刻度范围是小数点右边的数字位个数。

当刻度是负数时,刻度范围是小数点左边的数字位个数,从该位开始舍入。

如果不指定精度和刻度,则默认为最大精度,即38位。

DECLARE 
  num1  NUMBER:=3.1415926;           --没有精度,默认为38位;结果:3.1415926
  num2  number(3) :=3.1415926;       --精度3,刻度0.   结果:3.142
 -- num3  number(3) :=3141.5926;     --错误,数字精度大于3。
  num4  number(4,3) :=3.1415926;     --刻度3,保留小数点后3位,舍入 。num4:=3.142  
 -- num5  number(4,3) :=3141.5926;   --错误,数字精度大于3。
  num6  number(8,3) :=31415.9267;    --num6:=31415.927
  num7  number(4,-3):=31415.9267;    --刻度是-3,舍去小数点左边的前3位。num7:=31000
 -- num8  number(4,-3):=12345678.901;  --错误,数字精度大于4-(-3)。
  num9  number(4,-3):=314.159267;    --结果为0.因为刻度是3,舍去小数点左边3位。 num9:=0
 -- num0  number(4,-1):=123456;      --错误,数字精度大于4-(-1);
BEGIN
  DBMS_OUTPUT.put_line('num1:=' || num1);
  DBMS_OUTPUT.put_line('num2:=' || num2);
  DBMS_OUTPUT.put_line('num4:=' || num4);
  DBMS_OUTPUT.put_line('num6:=' || num6);
  DBMS_OUTPUT.put_line('num7:=' || num7);
  DBMS_OUTPUT.put_line('num9:=' || num9);
END;

2、LOB对象类型

LOB类型又称为大型对象类型,包含了BLOB,CLOB和NCLOB(内部存储)和BFILE(外部存储),它可以存储大的和没有结构的数据。例如文本、图像、视频和空间数据,大小能达到4GB。

LOB对象通过定位器来操作数据,因此在LOB类型中一般会包含一个定位器,定位器用于指向LOB数据。比如当使用查询语句选择一个BLOB类型的列时,将只有定位器被返回。


3、自定义子类型

自定义子类型,就是在标准类型的基础上进行进一步约束而创建的新类型。但实际上,子类型只是基类型的候选名称,不是一个新类型。

子类型的定义语法如下:

SUBTYPE  subtype_name   IS  base_type[ (constraint) ]  [ not null ]

【SUBTYPE】:用来指定当前声明一个子类型

【subtyep_name】:子类型名称

【IS】:指定子类型将要使用的基类型

【base_type】:指定子类型的基类,可以是任何标量类型或用户定义的类型。

【constraint】:约束知识用于限定基类型的精度和数值范围,或者最大长度。

【NOT NULL】:非空。

DECLARE
  SUBTYPE empcounttype IS INTEGER;    --定义子类型
  empcount empcounttype;              --声明子类型变量
  
  --定义表类型
  TYPE empnamelist IS TABLE OF VARCHAR2 (20);    
  SUBTYPE namelist IS empnamelist;      --定义表类型的子类型。
  
  --定义数组类型
  TYPE T_arr IS VARRAY(20) OF VARCHAR2(20);
  SUBTYPE arr IS T_arr;              --定义数组子类型
  lsit arr;
  
  --定义记录类型
  TYPE empinfo IS RECORD(
       empid number(4),
       empname varchar(20)
  );
  SUBTYPE emprecord IS empinfo;      --定义记录类型的子类型
  T_emp emprecord;
  
  SUBTYPE empno IS emp.empid%TYPE;   --定义%TYPE 子类型
  SUBTYPE emprow IS emp%ROWTYPE;     --定义%ROWTYPE 子类型 
BEGIN
  NULL;
END;







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值