Oracle中Binary_Integer与Pls_Integer 的分别

Binary_Integer

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

一、概述

  在ORACLE第88中学定义了:标量(SCALAOdyssey)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,上面详细介绍它们的风味。

  二、标量(SCALAR)

  合法的标量类型与数据库的列所使用的花色一样,别的它还有局地扩大。它又分为三个组:数字、字符、行、日期、行标志、布尔和可信。

  数字,它有两种基本项目–NUMBELX570、PLS_INTEGER和BINARY_INTENETiggo。NUMBE昂Cora能够描述整数或实数,而PLS_INTEGER和BINARY_INTENECR-V只好描述整数。

  NUMBE福睿斯,是以拾进制格式进行仓库储存的,它有利于存储,可是在总括上,系统会自动的将它转变来为贰进制实行演算的。它的定义情势是NUMBE奇骏(P,S),P是精度,最大三十12个人,S是刻度范围,可在-⑧四…1二柒间取值。例如:NUMBEENVISION(五,2)能够用来存款和储蓄表示-999.9九…999.9玖间的数值。P、S能够在概念是轻巧,例如:NUMBEWrangler(5)、NUMBELacrosse等;

  BINARY_INTENEXC60用来讲述不存款和储蓄在数据库中,不过需求用来测算的带符号的整数值。它以二的补码贰进制方式表达。循环计数器平常使用这序列型。

  PLS_INTEGER和BINARY_INTENEKoleos唯一差别是在盘算当中产生溢出时,BINATiguanY_INTENE奥迪Q5型的变量会被活动指派给三个NUMBE福特Explorer型而不会出错,PLS_INTEGECR-V型的变量将会发生错误。

  字符,包含CHALacrosse、VALacrosseCHA奇骏2(VATiggoCHARubicon)、LONG、NCHA帕杰罗和NVALX570CHA陆风X8贰几种类型。

  CHA福睿斯,描述定长的字符串,假如实在值不够定义的尺寸,系统将以空格填充。它的评释格局如下CHA凯雷德(L),L为字符串长度,缺省为一,作为变量最大327六15个字符,作为数据存款和储蓄在ORACLE第88中学最大为3000。

  VA凯雷德CHATucson二(VAQX56CHARAV4),描述变长字符串。它的宣示格局如下VAMuranoCHA奥迪Q3二(L),L为字符串长度,未有缺省值,作为变量最大327陆多个字节,作为数据存款和储蓄在ORACLE第88中学最大为四千。在多字节语言环境中,实际存储的字符个数恐怕低于L值,例如:当语言环境为华语(SIMPLIFIED
CHINESE_CHINA.ZHS16GBK)时,三个VA昂科雷CHA君越2(200)的数据列能够保存200个英文字符或然玖拾伍个汉字字符。

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

  NCHAOdyssey、NVA普拉多CHA奥迪Q32,国家字符集,与环境变量NLS钦命的言语集密切相关,使用格局和CHAR、VAQashqaiCHATiggo二同样。

  行,蕴含RAW和LONG RAW三种档次。用来囤积2进制数据,不会在字符集间转移。

  RAW,类似于CHA智跑,表明情势RAW(L),L为长度,以字节为单位,作为数据库列最大三千,作为变量最大327六七字节。

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

  日期,唯有1体系型–DATE,用来储存时间新闻,站用三个字节(从世纪到秒),相对未有“千年虫”难题。

  行标志,唯有壹种档次–ROWID,用来囤积“行标记符”,能够选择ROWIDTOCHACRUISER函数来将行标志转变到为字符。

  布尔,唯有①类别型–BOOLEAN,仅仅能够象征TRUE、FALSE也许NULL。

  可靠,唯有壹体系型–MLSLABEL,可以在TRUSTED
ORACLE中用来保存可变长度的2进制标签。在标准ORACLE中,只可以存款和储蓄NULL值。

三、复合(COMPOSITE)

  标量类型是经过预订义的,利用这几个体系能够衍生出1部分复合类型。首要有记录、表。

  记录,能够作为是1组标量的咬合结构,它的宣示格局如下:

  TYPE
record_type_name IS RECORD

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

  …….

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

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

  表,不是物理存款和储蓄数据的表,在此地是①种变量类型,也叫做PL/SQL表,它相仿于C语言中的数组,在处理情势上也一般。它的表明格局如下:

  TYPE
table_type_name IS TABLE OF scalar_type INDEX BY BINARY_INTENER;

  其中,table_type_name是项指标名字,scalar_type是1种标量类型的类别评释。引用时也不可能不定义相关的变量。表和数组差别,表有两列,KEY和VALUE,KEY正是概念时声称的BINA牧马人Y_INTENE大切诺基,VALUE便是概念时声称的scalar_type。

  除了记录和表之外,还有对象类型、集合(嵌套表和VA讴歌RDXRAYS)等项目,那些将专门解说。

  四、引用(REFERENCE)

  在PL/SQL八.0事先,唯有一种档次–REF
CU陆风X8SO凯雷德,也正是游标。它的定义较为轻便,

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

  在PL/SQL八.0从此,引入了REF类型,它指向1个指标。那体系型将独立讲解。(等自身弄理解再说,免得在尧舜前边……)

五、LOB型

  LOB变量主假诺用来囤积多量数目的数据库字段,最大能够储存4G字节的始末(这么大,存mp3?,浪费!)。主要有:

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

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

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

  BFILE:它用来允许ORACLE对数据库外部存储器储的大型二进制文本举办只读方式的造访。

  六、其他

  其实在完结对标量变量的了解之后,基本上可以应付C/S方式下的常规数据库应用所需了,后续的花色说实话,笔者玩了五年ORACLE,都很少用到。