Oracle中Binary_Integer和Pls_Integer 的别

Binary_Integer

Pls_Integer 都是整型类型.
Binary_Integer类型变量值计算是由Oracle来实施,不会见并发溢起,但是实施进度比缓,因为她是由Oracle模拟执行。而Pls_Integer的施行是由硬件即直接由CPU来运算,因而会起溢起,但彼实施进度比较前者快多。

一、概述

  在ORACLE8中定义了:标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种植多少列,下面详细介绍她的特征。

  二、标量(SCALAR)

  合法的标量类型及数据库的列所使用的门类相同,此外它还有一部分恢宏。它同时分为七单组:数字、字符、行、日期、行标识、布尔与可信。

  数字,它起三栽基本型–NUMBER、PLS_INTEGER和BINARY_INTENER。NUMBER可以描述整数或实数,而PLS_INTEGER和BINARY_INTENER只能描述整数。

  NUMBER,是以十迈入制格式进行仓储的,它有利于存储,但是当算达,系统会活动的将它换成为二进制进行演算的。它的概念方式是NUMBER(P,S),P是精度,最老38号,S是刻度范围,可在-84…127里头取值。例如:NUMBER(5,2)可以为此来囤积表示-999.99…999.99里面的数值。P、S可以在概念是概括,例如:NUMBER(5)、NUMBER等;

  BINARY_INTENER用来描述不存储于数据库中,但是急需用来算的带动符号的整数值。它以2的补码二进制形式表达。循环计数器经常用这种类型。

  PLS_INTEGER和BINARY_INTENER唯一区别是当算中发生溢起时,BINARY_INTENER型的变量会于电动指派给一个NUMBER型而未见面出错,PLS_INTEGER型的变量将见面发生错误。

  字符,包括CHAR、VARCHAR2(VARCHAR)、LONG、NCHAR和NVARCHAR2几栽档次。

  CHAR,描述定长的字符串,如果实在价值未敷定义之长短,系统以以空格填充。它的声明方式如下CHAR(L),L为字符串长度,缺省为1,作为变量最充分32767个字符,作为数据存储在ORACLE8中最可怜呢2000。

  VARCHAR2(VARCHAR),描述变长字符串。它的声明方式如下VARCHAR2(L),L为字符串长度,没有亏省值,作为变量最老32767只字节,作为数据存储在ORACLE8中最深啊4000。在差不多字节语言环境受到,实际存储的字符个数可能低于L值,例如:当语言环境为华语(SIMPLIFIED
CHINESE_CHINA.ZHS16GBK)时,一个VARCHAR2(200)的数据列可以保留200只英文字符或100独汉字字符。

  LONG,在数据库存储着好据此来保存高臻2G的数目,作为变量,可以象征一个无比深长为32760字节的而换字符串。

  NCHAR、NVARCHAR2,国家字符集,与环境变量NLS指定的语言集密切相关,使用办法与CHAR、VARCHAR2相同。

  行,包括RAW和LONG RAW两种类型。用来储存二前进制数据,不见面当字符集间转移。

  RAW,类似于CHAR,声明方式RAW(L),L为长,以字节为单位,作为数据库列最酷2000,作为变量最酷32767字节。

  LONG RAW,类似于LONG,作为数据库列最要命存储2G字节的数据,作为变量最可怜32760字节。

  日期,只出同样种植档次–DATE,用来存储时信息,站用7单字节(从世纪至秒),绝对没“千年虫”问题。

  行标识,只发生同种档次–ROWID,用来囤积“行标识符”,可以采用ROWIDTOCHAR函数来将执行标识转换成为字符。

  布尔,只发一样种植类型–BOOLEAN,仅仅可以象征TRUE、FALSE或者NULL。

  可信,只出相同种类型–MLSLABEL,可以当TRUSTED
ORACLE中因故来保存可转移长的第二向前制标签。在标准ORACLE中,只能存储NULL值。

三、复合(COMPOSITE)

  标量类型是由此预定义的,利用这些项目可以衍生出一些复合类型。主要发生记录、表。

  记录,可以作为是一样组标量的整合结构,它的扬言方式如下:

  TYPE
record_type_name IS RECORD

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

  …….

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

  其中,record_type_name是记录类型的名。(是未是看正在象CREATE
TABLE?……)引用时要定义相关的变量,记录但是TYPE,不是VARIABLE。

  表,不是大体存储数据的发明,在此间是同一种植变量类型,也号称PL/SQL表,它好像于C语言中之高频组,在处理方式上吗相似。它的扬言方式如下:

  TYPE
table_type_name IS TABLE OF scalar_type INDEX BY BINARY_INTENER;

  其中,table_type_name是种的名字,scalar_type是千篇一律栽标量类型的型声明。引用时也不能不定义相关的变量。表和数组不同,表有点儿排列,KEY和VALUE,KEY就是概念时宣称的BINARY_INTENER,VALUE就是概念时宣称的scalar_type。

  除了记录以及说明外,还有对象类型、集合(嵌套表和VARRAYS)等色,这些将专门教。

  四、引用(REFERENCE)

  于PL/SQL8.0事先,只发生雷同栽类型–REF
CURSOR,也便是游标。它的定义较为简单,

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

  以PL/SQL8.0过后,引入了REF类型,它对一个目标。这种类型将单身教。(等自我搞明白再说,免得在高人面前……)

五、LOB型

  LOB变量主要是用来存储大量数目的数据库字段,最可怜可储存4G字节的情节(这么深,存VCD?,浪费!)。主要有:

  CLOB:和ORACLE7中之LONG类型相似,存储单字节字符数量。(别用来存中文喔C语言。。。)

  NCLOB:用来储存定宽多配节字符数量。(例如:存《啸傲江湖》就够呛好)

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

  BFILE:它用来允许ORACLE对数据库外存储的特大型二进制文本进行单独读形式之访。

  六、其他

  其实在做到对标量变量的掌握之后,基本上可以应付C/S模式下的正常数据库应用所要了,后续之项目说实话,我打了5年ORACLE,都蛮少用到。