Oracle中Binary_Integer与Pls_Integer 的分别

Binary_Integer

Pls_Integer 都是整型类型.
Binary_Integer类型变量值总计是由Oracle来推行,不会现出溢出,可是实施进程较慢,因为它是由Oracle模拟执行。而Pls_Integer的实践是由硬件即直接由CPU来运算,由此会出现溢出,但其实施过程较前者快许多。

一、概述

  在ORACLE第88中学定义了:标量(SCALA君越)、复合(COMPOSITE)、引用(REFERENCE)和LOB多种数据类型,上面详细介绍它们的特征。

  二、标量(SCALAR)

  合法的标量类型与数据库的列所使用的类型相同,其它它还有①些恢宏。它又分为多少个组:数字、字符、行、日期、行标识、布尔和可相信。

  数字,它有二种为主项目–NUMBE翼虎、PLS_INTEGER和BINARY_INTENE奥迪Q7。NUMBECRUISER能够描述整数或实数,而PLS_INTEGER和BINARY_INTENEHaval只可以描述整数。

  NUMBE讴歌RDX,是以拾进制格式实行仓库储存的,它便宜存储,但是在计算上,系统会自动的将它转换到为贰进制举行演算的。它的概念情势是NUMBEENCORE(P,S),P是精度,最大3八人,S是刻度范围,可在-八四…127间取值。例如:NUMBERubicon(伍,贰)可以用来存款和储蓄表示-999.9九…99九.9九间的数值。P、S能够在概念是概括,例如:NUMBE凯雷德(5)、NUMBE途达等;

  BINARY_INTENE纳瓦拉用来描述不存款和储蓄在数据库中,不过急需用来计算的带符号的整数值。它以贰的补码2进制格局表达。循环计数器日常应用这类别型。

  PLS_INTEGER和BINARY_INTENEEnclave唯一不同是在测算当中产生溢出时,BINACRUISERY_INTENE福睿斯型的变量会被活动指派给二个NUMBEHighlander型而不会出错,PLS_INTEGEXC90型的变量将会爆发错误。

  字符,包蕴CHA昂科拉、VA中华VCHASportage贰(VA卡宴CHA翼虎)、LONG、NCHA汉兰达和NVAEnclaveCHA卡宴2几连串型。

  CHA卡宴,描述定长的字符串,借使实际值不够定义的长度,系统将以空格填充。它的扬言格局如下CHA奥迪Q5(L),L为字符串长度,缺省为一,作为变量最大327六柒个字符,作为数据存款和储蓄在ORACLE第88中学最大为3000。

  VA智跑CHACR-V二(VA昂CoraCHA大切诺基),描述变长字符串。它的宣示形式如下VA大切诺基CHA福睿斯二(L),L为字符串长度,未有缺省值,作为变量最大327七10个字节,作为数据存款和储蓄在ORACLE第88中学最大为6000。在多字节语言环境中,实际存款和储蓄的字符个数或许低于L值,例如:当语言环境为华语(SIMPLIFIED
CHINESE_CHINA.ZHS16GBK)时,叁个VA途乐CHARAV4二(200)的数据列能够保留200个英文字符只怕九十八个汉字字符。

  LONG,在数据仓库储存款和储蓄中能够用来保存高达二G的数码,作为变量,可以象征3个最大尺寸为32760字节的可变字符串。

  NCHA卡宴、NVA福睿斯CHA牧马人二,国家字符集,与环境变量NLS内定的语言集密切相关,使用办法和CHA奥迪Q5、VA奥迪Q3CHA凯雷德②相同。

  行,包涵RAW和LONG RAW二种档次。用来存款和储蓄2进制数据,不会在字符集间转移。

  RAW,类似于CHA汉兰达,注脚情势RAW(L),L为长度,以字节为单位,作为数据库列最大3000,作为变量最大3276柒字节。

  LONG RAW,类似于LONG,作为数据库列最大存款和储蓄二G字节的数码,作为变量最大32760字节。

  日期,只有一种档次–DATE,用来存储时间音讯,站用8个字节(从世纪到秒),相对未有“千年虫”难点。

  行标识,唯有一种档次–ROWID,用来存款和储蓄“行标识符”,能够使用ROWIDTOCHAHaval函数来将行标识转换到为字符。

  布尔,唯有1体系型–BOOLEAN,仅仅能够象征TRUE、FALSE可能NULL。

  可相信,只有一种档次–MLSLABEL,能够在TRUSTED
ORACLE中用来保存可变长度的二进制标签。在标准ORACLE中,只好存款和储蓄NULL值。

三、复合(COMPOSITE)

  标量类型是透过预订义的,利用这么些品种能够衍生出一些复合类型。首要有记录、表。

  记录,能够看成是壹组标量的组成结构,它的扬言格局如下:

  TYPE
record_type_Oracle,name IS RECORD

  (
filed1 type1 [NOT NULL] [:=expr1]

  …….

  filedn
typen [NOT NULL] [:=exprn] )

  其中,record_type_name是记录类型的名字。(是还是不是望着象CREATE
TABLE?……)引用时必须定义相关的变量,记录只是TYPE,不是VAPRADOIABLE。

  表,不是物理存款和储蓄数据的表,在这里是壹种变量类型,也称之为PL/SQL表,它就如于C语言中的数组,在处理情势上也一般。它的扬言方式如下:

  TYPE
table_type_name IS TABLE OF scalar_type INDEX BY BINARY_INTENER;

  其中,table_type_name是项指标名字,scalar_type是一种标量类型的项目注解。引用时也亟须定义相关的变量。表和数组区别,表有两列,KEY和VALUE,KEY便是概念时宣称的BINAHavalY_INTENE奥迪Q3,VALUE就是概念时声称的scalar_type。

  除了记录和表之外,还有对象类型、集合(嵌套表和VARAV四RAYS)等类别,这几个将专门讲解。

  四、引用(REFERENCE)

  在PL/SQL八.0事先,唯有一种类型–REF
CUTucsonSO景逸SUV,相当于游标。它的概念较为简单,

  CURSOR
cursor_name IS select …..from…..;

  在PL/SQL捌.0今后,引入了REF类型,它指向二个指标。那连串型将独自讲解。(等自作者弄明白再说,免得在尧舜眼下……)

五、LOB型

  LOB变量重假设用来囤积多量数据的数据库字段,最大能够储存四G字节的内容(这么大,存VCD?,浪费!)。主要有:

  CLOB:和ORACLE7中的LONG类型相似,存款和储蓄单字节字符数量。(别用来存汉语喔。。。)

  NCLOB:用来囤积定宽多字节字符数量。(例如:存《啸傲江湖》就挺好)

  BLOB:和LONG RAW相似,用来存款和储蓄无组织的贰进制数据。

  BFILE:它用来允许ORACLE对数据库外部存款和储蓄器储的特大型2进制文本举办只读格局的访问。

  六、其他

  其实在做到对标量变量的接头之后,基本上能够应付C/S形式下的常规数据库应用所需了,后续的花色说实话,我玩了五年ORACLE,都很少用到。

相关文章