`
janedoneway
  • 浏览: 570310 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle rowid

    博客分类:
  • Java
 
阅读更多

oracle为每个表的每一条记录都赋予了一个唯一的标识号rowid 
它是伪列,在定义表结构时并不声明它,但是系统自动建立. 
用desc查看的表结构的时候见看不到该字段. 
用rowid来进行update,delete等操作时速度最快. 
而且oracle7和oracle8及以后版的rowid不同: 

oracle7的rowid由三部分组成: 
block.row.file 
BBBBBBBB.RRRR.FFFF 
文件块号.块中的行号.文件的绝对号 

oracle8、8i、9i的rowid由四部分组成: 
OOOOOOFFFBBBBBBRRR 
OOOOOO:数据对象号,表示数据库段的编号 
FFF表在空间中的相对文件号 
BBBBBB:在一个文件中的块号 
RRR块中行的位置号 

rowid数据类型的使用: 
rowidtochar(rowid):把rowid转换成char类型. 

chartorowid(char):把转char换成rowid类型. 

 

select rowidtochar(rowid) from  test
AABj3OAEoAAAHpjAAA 
select chartorowid('AABj3OAEoAAAHpjAAA') from test
AABj3OAEoAAAHpjAAA

 

select fieldName from test where rowid='AABj3OAEoAAAHpjAAA'

 

试验:select rowidtochar(rowid) as rowid from test

    发现添加别名后执行出错,不解?原来是因为使用了关键字为别名,OMG!

改为:select rowidtochar(rowid) as rid from test

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics