oracle internal number 数据类型存储
转自:http://ilonng.blog.sohu.com/130335741.html
oracle的number类型是一种软件数据类型,在oracle软件本身中实现,我们不能使用固有硬件操作将两个number类型相加,这要在软件中模拟,number 类型的内部编码是2。oracle存储一个数的时,会存储尽可能少的内容来表示这个数,为此它会存储有效数字、用于指定小数点位置的一个指数,以及有关数值符号的信息(正或者负)。因此,数中包含的有效数字越多,占用的存储空间就越大。
oracle底层存储number类型采用下面的这种形式:
sign bit/exponent,digit1,digit2,…,digit20
sign bit/exponent为标志位,digit1...digit20为数值位,可见number最多占据21个字节。
一个数是可以使用科学计算法来正确表示的,如10=1*power(10,1),-101=-1.01*power(10,2),0.2=2*power(10,-1)。oracle就是通过这个原理来存储数据,它将任何一个它可以表示的数据转换成一个符号位、一个指数、一个有效数来存储,举个例子,123在oracle中是这样来存储的,+(1.23*power(100,1)),即它是以100为科学计算法的指数基数,为什么这样以及怎么来存储,请看下面。
存储数据的第一个字节是标志位,这个字节里面会反映出这个数字的符号位以及表示这个数字的指数的符号位。采用科学计数法,任何一个实数S都可以描述为A.B×power(100,N),A表示整数部分(可能是正数,可能是负数),B表示小数部分,而N表示10的指数部分。那么oracle怎么用一个字节来表示这些信息呢?
1、拿这个字节的最高位来表示正负,0表示负数,1表示正数。由此可见,这个数字在128这个部分被一切为2份,如果这个数字大于128,那么这个数就是正数,如果这个数字小于128,那么这个数字就是负数,如果这个数字等于128,那么这个数字就是0,如:
15:16:24 WATER@ lake>select 1,dump(1) from dual;
1 DUMP(1)
---------- ------------------
1 Typ=2 Len=2: 193,2
这里的第一个字节的标志位是193,大于128,故其为正数,另外可以看到,这里还有个偏移量为65,193=128+65+0。
15:16:30 WATER@ lake>select -1,dump(-1) from dual;
-1 DUMP(-1)
---------- -----------------------
&
相关文档:
什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y &nb ......
oracle 至今没有推出针对win7的版本,无奈之下查询网络,网上大虾表示修改refhost.xml文件即可。
进入自己实战阶段,从oracle官方下载oracle 10g for vista and windows2K8 x86版(for windows是支持vista内核的,win7的内核与2008以及vista的内核是一样)。
先点击安装,在安装的版本检测时提示目前oracle不支持version为6 ......
1、创建存储过程
create or replace procedure test(var_name_1 in type,var_name_2 out type) as
--声明变量(变量名 变量类型)
begin
--存储过程的执行体
end test;
打印出输入的时间信息
E.g:
create or replace procedure test(workDate in Date) is
begin
dbms_output.putline('The input date is: ......
以前经常使用oracle的客户端工具toad来进行数据库的导入和导出,其实个人倒不喜欢用这个客户端工具,感觉功能很强大的一个工具,dba适用。开发还是用pl/sql比较好,简洁的界面。
C:\Users\Administrator>imp nwgis/pass file=e:/nwgis20100529.DMP log=dible_db full=y ignore=y
启动命令行,修改 ......
批处理(bat文件) 自动启动/关闭oracle服务
判断oracle 服务状态
如果服务处于启动状态,就关闭服务;
如果服务处于关闭状态,就启动服务。
@ECHO OFF
for /f "skip=3 tokens=4" %%i in ('sc query OracleServiceORCL') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (
ECHO Stoping Oracle ......