仓酷云

标题: MSSQL网站制作之利用dbms_rowid包取得rowid的具体信息 [打印本页]

作者: 只想知道    时间: 2015-1-16 22:37
标题: MSSQL网站制作之利用dbms_rowid包取得rowid的具体信息
你看出了作者的深度?深处半米!当初是冲那么多的大牛给他写序才买的,后来才发现无啥内容,作者也只是才用几年的新手,百花了几十两银子,再次感叹当今社会的虚伪与浮躁

利用dbms_rowid包取得rowid的具体信息

LastUpdated:Sunday,2004-11-0712:46Eygle






Rowid中包括了纪录的具体信息,经由过程dbms_rowid包能够取得这些信息.本文经由过程一个界说自界说函数先容该package的利用.

createorreplacefunctionget_rowid(l_rowidinvarchar2)returnvarchar2isls_my_rowidvarchar2(200);rowid_typenumber;object_numbernumber;relative_fnonumber;block_numbernumber;row_numbernumber;begindbms_rowid.rowid_info(l_rowid,rowid_type,object_number,relative_fno,block_number,row_number);ls_my_rowid:=Object#is:||to_char(object_number)||chr(10)||Relative_fnois:||to_char(relative_fno)||chr(10)||Blocknumberis:||to_char(block_number)||chr(10)||Rownumberis:||to_char(row_number);returnls_my_rowid;end;/



我们看一下其用法:



[oracle@jumpertools]$sqlplusscott/tigerSQL*Plus:Release9.2.0.4.0-ProductiononSunNov712:30:192004Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.Connectedto:Oracle9iEnterpriseEditionRelease9.2.0.4.0-ProductionWiththePartitioningoptionJServerRelease9.2.0.4.0-ProductionSQL>setechoonSQL>@f_get_rowidSQL>createorreplacefunctionget_rowid2(l_rowidinvarchar2)3returnvarchar24is5ls_my_rowidvarchar2(200);6rowid_typenumber;7object_numbernumber;8relative_fnonumber;9block_numbernumber;10row_numbernumber;11begin12dbms_rowid.rowid_info(l_rowid,rowid_type,object_number,relative_fno,block_number,row_number);13ls_my_rowid:=Object#is:||to_char(object_number)||chr(10)||14Relative_fnois:||to_char(relative_fno)||chr(10)||15Blocknumberis:||to_char(block_number)||chr(10)||16Rownumberis:||to_char(row_number);17returnls_my_rowid;18end;19/Functioncreated.SQL>SQL>select*fromdept;DEPTNODNAMELOC-------------------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTONSQL>selectrowid,a.*fromdepta;ROWIDDEPTNODNAMELOC-------------------------------------------------------AAABiPAABAAAFRSAAA10ACCOUNTINGNEWYORKAAABiPAABAAAFRSAAB20RESEARCHDALLASAAABiPAABAAAFRSAAC30SALESCHICAGOAAABiPAABAAAFRSAAD40OPERATIONSBOSTONSQL>colrow_idfora60SQL>selectget_rowid(AAABiPAABAAAFRSAAA)row_idfromdual;ROW_ID------------------------------------------------------------Object#is:6287Relative_fnois:1Blocknumberis:21586Rownumberis:0SQL>selectget_rowid(AAABiPAABAAAFRSAAB)row_idfromdual;ROW_ID------------------------------------------------------------Object#is:6287Relative_fnois:1Blocknumberis:21586Rownumberis:1SQL>







本文作者:
eygle,Oracle手艺存眷者,来自中国最年夜的Oracle手艺论坛itpub.
www.eygle.com是作者的团体站点.你可经由过程Guoqiang.Gai@gmail.com来接洽作者.接待手艺切磋交换和链接互换.

原文出处:

http://www.eygle.com/faq/Use.dbms_rowid.Package.Get.Detail.Of.Rowid.htm


用一个库#bak_database存放这些历史数据。
作者: 若天明    时间: 2015-1-19 18:59
大侠们有推荐的书籍和学习方法写下吧。
作者: 兰色精灵    时间: 2015-1-28 09:30
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
作者: 分手快乐    时间: 2015-2-5 15:46
如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
作者: 简单生活    时间: 2015-2-12 20:17
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
作者: 不帅    时间: 2015-3-11 09:54
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
作者: 透明    时间: 2015-3-18 03:39
可以动态传入参数,省却了动态SQL的拼写。
作者: 飘灵儿    时间: 2015-3-25 11:30
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2