oracle为每个表的每一条记录都赋予了一个唯一的标识号rowid
它是伪列,在定义表结构时并不声明它,但是系统自动建立.
用desc查看的表结构的时候见看不到该字段.
用rowid来进行update,delete等操作时速度最快.
而且oracle7和oracle8及以后版的rowid不同:oracle 7 的rowid由三部分组成:
block.row.file
BBBBBBBB.RRRR.FFFF
文件块号.块中的行号.文件的绝对号oracle 8    8i       9i的rowid由四部分组成:
OOOOOOFFFBBBBBBRRR
OOOOOO:数据对象号,表示数据库段的编号
FFF表在空间中的相对文件号
BBBBBB:在一个文件中的块号
RRR块中行的位置号
select rowid from tablename;
rowid数据类型的使用:
rowidtochar:把rowid转换成char类型.select rowidtochar(a.rowid) from testa a where rownum<=1
AABj3OAEoAAAHpjAAAselect chartorowid('AABj3OAEoAAAHpjAAA') from dual
AABj3OAEoAAAHpjAAA

解决方案 »

  1.   

    oralce 中没有id,而是rowid伪列,系统自动生成的,让系统为表中的列分配唯一值
    1-6位:代表OBJECT   
    7-9位:文件相对值   
    10-15:文件中的BLOCK   
    16-18:BLOCK中的SLOT值
      

  2.   

    ROWID是数据行在物理磁盘上的物理地址,Oracle通过ROWID来定位数据的具体位置,这是存取表中数据的最快的方法
      

  3.   

    楼主问的是表的ID,不是记录的ID啊select * from dba_tables