pl/sql 如何实现替代plsql查询表空间

扫一扫下载手机客户端
扫描我,关注团购信息,享更多优惠
||网络安全
| | | | | | | | | | | | | | | |
||电子电工
汽车交通| | | | | | | | | |
||投资理财
| | | | | | | | | | | | | | | | |
| | | | | | |
| | | | | | | | | | | | | | | | | | |
| | | | | | |||
||外语考试
| | | | | | | | |
| 视频教程|
Oracle PL/SQL实战(汇聚Oracle专家集体智慧,DBA修炼内力必读秘籍)
定价:¥89.00
校园优惠价:¥69.42 (78折)
促销活动:
商品已成功飞到您的手机啦!快登录手机站看看吧!
下载客户端
> 微信关注“互动出版网”,便捷查询订单,更多惊喜天天有
原书名:Expert Oracle PL/SQL Practices:for Oracle Developers and DBAs
原出版社:
ISBN:2上架时间:出版日期:2012 年11月开本:16开页码:421版次:1-1
所属分类:
  汇聚Oracle专家集体智慧
内容贴近实战,讲解透彻精彩
DBA修炼内力必读秘籍
《Oracle PL/SQL实战》共15章,分别由15位业内顶级专家担纲撰写。一条SQL语句的误用,可能导致作业的运行时间增加几百倍,Riyaj Shamsudeen巧妙地回答了何时使用PL/SQL这一问题;Michael Rosenblum说明了如果只有到最终运行时,才知道所要运行的SQL语句到底是什么,那该如何编写代码;Dominic Delmolino介绍了用PL/SQL进行并行处理的方法,以及这样能获得的益处和产生的额外负担。《Oracle PL/SQL实战》还有更多精彩内容等待读者一探究竟。
《Oracle PL/SQL实战》适合有一定PL/SQL基础的读者学习。
John Beresniewicz(约翰?贝雷斯尼维奇)是位于加州红木城红木岸(Redwood Shores)的Oracle总部技术团队的一名咨询顾问。他于2002年加入Oracle,负责企业管理器的数据库性能领域,他对诊断和调优包、实时应用测试、支持工作台和Exadata的设计作出了重要贡献。多年以来,他经常在Oracle全球大会和其他会议上发言,发言主题包括数据库性能和PL/SQL编程。他与Steven Fellerstein合著了Oracle Built-in Packages(O’Reilly&Associates,1998年)一书,并且是OakTable网络的创始人之一。
Adrian Billington (阿德里安?比林顿)是应用设计、开发和性能调优方面的顾问。自1999年以来,一直从事Oracle数据库方面的工作。他是www.oracle-developer.net网站的发起人,这个网站为Oracle开发人员提供各种SQL和PL/SQL功能、实用工具和技术。阿德里安还是Oracle ACE,同时也是OakTable网络的成员。现在,他与妻子安吉和三个孩子:格鲁吉亚、奥利弗和伊莎贝拉一起居住在英国。
Martin Büchi (马丁?步琪)自2004年以来,任Avaloq公司首席软件架构师。该公司是一个标准化的银行软件供应商,其产品基于Oracle RDBMS构建,包含1100万行PL/SQL代码。他与两位同事一起设计了系统架构,并评审了170名全职PL/SQL开发人员的设计和代码,以追求软件的简明、效率和健壮性。马丁经常在Oracle大会上发言。2009年,他被Oracle Magazine评选为PL/SQL年度开发人员。从事Oracle数据库工作之前,马丁曾在面向对象的系统、形式化方法和近似记录匹配等领域工作。他拥有瑞士联邦技术研究所的硕士学位和芬兰土尔库计算机科学中心的博士学位。业余时间,马丁喜欢与他的家人一起进行各种户外运动。
Melanie Caffrey (梅拉妮?卡弗里)是Oracle公司高级开发经理,为不同客户的业务需求提供前端和后端的Oracle解决方案。她是多部技术出版物的合著者,包括Oracle Web Application Programming for PL/SQL Developers、Oracle DBA Interactive Workbook、Oracle Database Administration: The Complete Video Course等,这些书全部由Prentice Hall出版。她在纽约哥伦比亚大学的计算机技术与应用课程中指导学生,教授先进的Oracle数据库管理和PL/SQL开发。她也经常在Oracle会议上发言。
Ron Crisco(罗恩?克里斯科)28年来分别担任软件设计师、开发人员和项目负责人,并有21年的Oracle数据库工作经验。他在R方法(Method R)公司从事软件设计和开发、软件产品管理(如R方法剖析器、MR工具和MR跟踪)、咨询、教授课程等工作。他的特长是简化复杂的工作,这在帮助他身边的人完成非凡工作时尤显宝贵。
Lewis Cunningham(刘易斯?坎宁安)在IT领域已经工作了20多年。自1993年以来一直与Oracle数据库打交道。他的专长是应用程序设计、数据库设计,以及大容量的VLDB数据库编码。目前他任职于佛罗里达州圣彼得堡的一家金融服务公司,担任高级数据库架构师,负责超大规模、高事务率分析型数据库和应用程序的工作。他花了大量时间来与最新的技术和趋势保持同步,并在用户组发表演讲,举办网络研讨会。刘易斯也是一位Oracle ACE总监和Oracle认证专家。他在Oracle技术网发表了数篇文章,并在/ blogs/oracle-guide维护一个Oracle技术博客。刘易斯写了两本书:EnterpriseDB: The Definitive Reference(Rampant Tech press,2007年)和SQL DML: The SQL Starter Series(CreateSpace,2008年)。他与他的妻子及两个儿子起住在佛罗里达州。可以通过电子邮件与他联系。
Dominic Delmolino (多米尼克?德莫里诺)是Agilex技术公司首席Oracle和数据库技术专家,这是一家专门协助政府和私营企业实现信息价值的咨询公司。多米尼克拥有24年以上的数据库经验,其中担任过20多年的Oracle数据库工程和开发专家。他是OakTable网络的成员,并定期出席各种学术会议、研讨会,以及欧洲和美国的用户组会议。他还维护网站,该网站专注于与数据库应用程序开发相关的数据库编码和设计实践。多米尼克拥有纽约州伊萨卡康奈尔大学的计算机科学学士学位。
Sue Harper (苏?哈珀)是数据库开发工具组中的Oracle SQL Developer和SQL Developer数据建模器的产品经理。她自1992年以来一直在Oracle公司工作,目前在伦敦办事处工作。苏是一些杂志的特约撰稿人,维护着一个技术博客,并在世界各地的许多会议上发言。她撰写了技术书籍Oracle SQL Developer 2.1(Packt,2009),业余时间,苏喜欢步行和摄影。同时,她还花时间到新德里的贫民区做慈善工作,帮助那里的妇女和儿童。
Torben Holm (托尔?霍尔姆)自1987年以来一直从事开发工作。自1992年以来,他一直致力于与Oracle相关的工作,前四年担任系统分析师和应用程序开发人员(Oracle 7、Forms 4.0/Reports 2.0和DBA),然后做了两年开发(ORACLE6/7、Forms 3.0和RPT以及DBA)。他在Oracle丹麦公司的高级服务组工作了数年,担任首席高级顾问,执行应用程序开发和DBA任务。他还担任过PL/SQL、SQL和DBA课程的讲师。现在,托尔在Miracle A/S(www.miracleas.dk)工作,担任顾问,负责应用开发(PLSQL、mod_plsql、Forms、ADF)和数据库管理。10年来他一直在 Miracle A/S公司工作。他是Oracle认证开发人员,并且也是OakTable网络成员。
Connor McDonald (康纳?麦当劳)自20世纪90年代初一直从事Oracle相关工作,他非常熟悉Oracle 6.0.36和Oracle 7.0.12。在过去11年中,康纳曾为位于西欧、东南亚、澳大利亚、英国和美国的公司开发过系统。他已经认识到,虽然世界各地的系统及方法非常多样,但开发在Oracle上运行的系统往往有两个共同的问题:要么避免使用Oracle特定的功能,要么就是采取不太理想的用法或随意乱用它们。正是这种观察,促使他创建了一个提示和技巧的个人网站(www.oracledba.co.uk),并努力在Oracle演讲者组织中发表更多演讲,以提高PL/SQL的业内认知度和普及度。
Arup Nanda (奥雅纳?南大)自1993年以来,一直是Oracle DBA,他熟悉数据库管理的所有方面,从建模到灾难恢复。目前,他在纽约州白原市的喜达屋酒店(即喜来登、威斯汀等连锁酒店的母公司)领导全球DBA团队。他是独立Oracle用户协会(IOUG)旗下出版物SELECT Journal的特约编辑,在许多Oracle技术盛会,如Oracle全球和本地用户组(如纽约Oracle用户组)中发表演讲,并为印刷出版物如Oracle Magazine和网络出版物如Oracle Techndogy Network撰写了许多文章。奥雅纳与他人合著了两本书:Oracle Privacy Security Auditing(Rampant,2003年)和Oracle PL/SQL for DBAs(O’Reilly,2005年)。由于他的专业成就和对用户社区的贡献,Oracle评选他为2003年年度DBA。奥雅纳与他的妻子Anindita和儿子阿尼什住在康涅狄格州的丹伯里。可以通过联系他。
Stephan Petit (斯蒂芬?佩蒂特)于1995年在位于瑞士日内瓦的欧洲粒子物理实验室(CERN)开始了他的职业生涯。他现在是一个软件工程师和学生团队的负责人,负责为实验室和其他部门提供应用程序和工具。工程和设备数据管理系统是这些工具之一,也称为CERN EDMS。像CERN的大型强子对撞机(LHC)项目有40年或以上的生命周期。 EDMS是实验室的数字化工程的内存/记忆体。电子文件管理系统中存储了与一百多万件设备有关的一百多万份文件,EDMS也供CERN的产品生命周期管理(PLM)和资产跟踪系统使用。 EDMS几乎完全是基于PL/SQL的,并旨在拥有一个至少与LHC一样长的生命周期。
斯蒂芬和他的团队一直在完善PL/SQL编码规范和最佳实践,以满足他们非常有趣的各种挑战的组合:几十年的可维护性、可靠性、高效的错误处理、可扩展性、模块的可重用性。团队成员的频繁轮换,其中大部分只是暂时在CERN实习的学生,加剧了这些挑战。最古老的一段代码是在1995年写的,现在仍然在使用――并且成功地运行!除了完善PL/SQL,斯蒂芬还喜欢不时登台表演,比如担任CERN摇滚夏季音乐节的摇滚乐队歌手,以及在多部戏中出演角色。
Michael Rosenblum (迈克尔?罗森布鲁姆)是Dulcian公司的软件架构师/开发DBA,他负责系统调优和应用程序架构。迈克尔通过编写复杂的PL/SQL例程和研究新功能支持Dulcian开发人员。他是PL/SQL for Dummies(Wiley,2006年)一书的作者之一,并在IOUG Select Journal和ODTUG Tech Journal发表了许多篇与数据库相关的文章。迈克尔是一位Oracle ACE,也经常出席不同地区和国家的Oracle用户组大会(Oracle OpenWorld大会、ODTUG、IOUG Collaborate、RMOUG、NYOUG等),他是ODTUG万花筒2009年“最佳演讲奖”得主。在他的家乡乌克兰,他获得了乌克兰总统奖学金,并拥有信息系统理学硕士学位并以优异成绩获得基辅国立经济大学毕业证书。
Robyn Sands (罗宾?桑兹)是思科系统公司的软件工程师,她为思科的客户设计和开发嵌入式Oracle数据库产品。自1996年以来,她一直使用Oracle软件,并在应用开发、大型系统实现和性能测量方面具有丰富经验。罗宾的职业生涯始于工业工程和质量工程,她将自己对数据的挚爱结合到以前接受的教育和工作经验中,寻找新方法来建立性能稳定、易于维护的数据库系统。她是OakTable网络成员,并是下面两本Oracle书籍的作者之一:Expert Oracle Practices和Pro Oracle SQL(都由Apress出版,2010)。罗宾偶尔在http://adhdocddba. 发表一些博客。
Riyaj Shamsudeen是OraInternals公司首席数据库管理员和主席,这是一家从事性能调优/数据库恢复/EBS11i等领域的咨询公司。他专门研究真正的应用集群(RAC)、性能调优和数据库内部结构。他还经常在其博客上发表这些技术领域的文章。他也经常出席许多国际会议,如HOTSOS、COLLABORATE、RMOUG、SIOUG、UKOUG等,他是OakTable网络的骄傲一员。他拥有16年以上使用Oracle技术产品的经验,并担任了15年以上的Oracle/Oracle应用程序数据库管理员。
1995年参加工作,高级程序员、系统分析师、高级工程师。2004年起接触Oracle数据库,获得Oracle数据库管理9i至11g、PL/SQL开发、性能优化、RAC管理、数据仓库等多个OCP、OCE、OCS认证。ITPUB社区Oracle开发版版主,《剑破冰山――Oracle开发艺术》一书合著者。做过需求分析、系统分析、架构设计、数据库和应用程序性能优化等工作。参与数次全国性普查数据处理系统的设计、开发和运维。
《Oracle PL/SQL实战》
第1章 避免误用 1
1.1 逐行处理 1
1.2 嵌套的逐行处理 3
1.3 查找式查询 5
1.4 对DUAL的过度访问 8
1.4.1 日期的算术运算 8
1.4.2 访问序列 9
1.4.3 填充主-从行 9
1.5 过多的函数调用 10
1.5.1 不必要的函数调用 10
1.5.2 代价高昂的函数调用 12
1.6 数据库链接调用 14
1.7 过度使用触发器 15
1.8 过度提交 15
1.9 过度解析 16
1.10 小结 16
第2章 动态SQL:处理未知 18
2.1 动态SQL的三种方式 19
2.1.1 本地动态SQL 19
  2010年,我参与编写了一本有关Oracle开发的书《剑破冰山:Oracle开发艺术》,这本书的重点是SQL编程,因此曾想过再写一本关于PL/SQL开发的书。2011年10月,在《剑破冰山:Oracle开发艺术》上市大约1周年的时候,我在图灵公司的网站发现了本书英文版正在征集译者,看了下目录,感觉它提到了很多我想表达的内容,而且比较全面、系统。于是,就萌生了翻译的想法。本书由15位作者共同编写,每人负责一章,所以每章都能独立成篇。而把各章内容结合到一起,又基本上涵盖了PL/SQL开发的各个方面。需要指出一点,本书不是PL/SQL入门教材,读者需要有一定PL/SQL基础。实际上,本书大部分内容在Oracle官方的培训计划中属于高级课程Oracle Database 11g: Advanced PL/SQL的范畴。
  决定挑战这个任务后,我通过图灵副总经理谢工联系到了傅志红副总经理,有幸通过了试译。这本书英文原作有500多页,加上我之前还没有翻译过这么大规模的文字,所以觉得一人翻译在时间上有些吃紧,因此想邀请上本书的几位合著者共同翻译。不过由于各种原因没有成功,最终我还是独自承担了这个任务,在5个月的时间里,完成了初译、复查、修改等工作。
  如果没有大家的帮助,我一个人无法完成这本译作。
  首先感谢老战友苏旭晖(ITPUB Oracle开发版版主,网名newkid),他现定居加拿大多伦多,从事数据库应用系统的设计与开发工作。虽未见面,但他在我翻译的5个多月时间里,一直不辞辛劳地帮助我解决多处语言和技术难点,并给出了更好的译法。更难得的是,对原书个别不合理的叙述,提出了中肯的意见,使读者不仅能通过本书了解原作者的观点,还能引发进一步的思考。
  其次感谢我妻子李颖,她是英语专业毕业生,作为本书的第一读者,帮助我检查出很多生硬的译文,并把它们修改得更加通顺。得益于她的修改,本书才有现在的可读性。同时,她还承担了培养教育孩子的重任,使我可以专心翻译本书。
  还要感谢老大哥贾书民,他有10多年的Oracle开发经验,做过许多基于Oracle的大型项目,他通读了我的译文,提出了许多中肯的修改建议。在我试译时,他也帮助我对译文做了很多修改,对我顺利通过试译起到了很大的作用。
  感谢图灵公司李鑫编辑、李静编辑、李松峰主任,他们对译文进行把关,并对语言进行润色,使表达更加地道。
  最后希望这本书能帮助读者提高Oracle PL/SQL开发水平。由于译者经验和水平有限,译文中难免有不妥之处,恳请读者批评指正!
  作为图书编辑,我一般满足于在幕后做好自己的编辑工作,很少站到前台来为我负责编辑的图书作序。但是,这次我却破例了。因为我也曾做过开发,这本书的内容勾起了我的很多回忆。
  本书旨在教你如何有效地使用PL/SQL。它不是描述语法的书,而是介绍如何把语法及其特性与良好的开发实践相结合,创建更具有可靠性、可扩展性的应用,并使之具备长期可维护性。
  不管使用什么工具,首先需要明白的是在什么情况下使用它比较合适。在本书的开篇章节“避免误用”中,Riyaj Shamsudeen巧妙地回答了何时使用PL/SQL这一问题。我把这一章放在本书的开始,也是因为我个人的经历:那是在20世纪90年代末,我进行了最成功的一次性能优化,那次我把客户端PC上的一堆过程代码改写为一个SQL语句以后,一个作业的运行时间从超过36小时缩短到仅仅几分钟。虽然PL/SQL不是导致性能问题的罪魁祸首,但是我得到了一条经验――基于集合的方法(如果有可能)通常优于过程性代码。
  Michael Rosenblum紧接着写了动态SQL那一章,其内容相当精彩。他说明了如果只有到最终运行时才知道所要运行的SQL语句到底是什么,那么该如何编写代码。这使我想起20世纪90年代初的一段经历,那时我在陶氏化学公司利用Rdb的扩展动态游标功能集,为一个医疗记录系统写数据装载应用程序。我感觉那是我开发过的最有趣的应用程序之一。
  Dominic Delmolino介绍了用PL/SQL 进行并行处理的方法,以及这样能获得的益处和产生的额外负担。谨小慎微,永不为过!我在当数据库管理员时犯下的最大错误之一就是,有一次头脑一热,在一个关键的应用表上设置了一个并行度,其目的是为了想让其中的一个报表程序运行得更快。可是,事与愿违。好像键盘上的回车键连着我的电话似的,修改后大约不到一分钟,我的电话铃就响了,电话线另一端的主管对我的修改非常不满。无须多言,从此我就决定在实施并行前一定要深思熟虑。Dominic写的那章可以帮助我们避免陷入这样的窘境。
  本书的多章内容涵盖了代码规范和极其实用的编程经验。Stephan Petit向我们介绍了一套实用的命名和编码规范。Torben Holm讲述了PL/SQL警告和条件编译。Lewis Cunningham阐述了代码分析,使我们认识到真正理解自己所写的代码及其工作原理的重要性,发人深思。Robyn Sands的“渐进式数据建模”一章,令我们对渐进式数据模型的良好设计及灵活性有了更多的思考。Melanie Caffrey介绍了经常使用的各种游标类型,帮助我们在不同条件下正确地选择游标。
  其他章节介绍如何进行调试和故障排除。Sue Harper介绍了PL/SQL单元测试,特别是一些如今已经集成在SQL Developer中的功能集(这使我想起了在纸上写单元测试脚本的日子),它可以帮助避免犯回归错误。利用自动化单元测试,能够容易且方便地验证程序,以确保自己不会在修复一个错误的同时制造了更多的错误。
  还有John Beresniewicz介绍“合同导向编程”那一章。John给出的方法的一个关键部分是,在代码的各种特定地方使用断言来验证条件。记得我首次了解断言技术是在做PowerBuilder编程时,那已经是很久很久以前的事了。我很高兴看到John把这项技术和PL/SQL联系起来,将其发扬光大。
  Arup Nanda的论述能够帮助我们控制依存和失效问题。依存问题可能会导致发生类似随机的、难以重现的应用程序错误。Arup展示了如何完全掌控那些必将发生的事情,这样你才不会落入意外错误的陷阱。
  一般情况下,我们不得不考虑性能和扩展性。Ron Crisco告诉我们通过剖析代码,找到尽可能优化代码的方法。Adrian Billington讨论了从SQL语句中调用PL/SQL的性能问题。Connor McDonald论述了批量SQL操作惊人的性能优势。
  关于可扩展性,通常会被遗漏的一面是应用程序的规模和参与开发的人数。PL/SQL是否适合数十到数百位程序员的大规模开发?Martin Büchi在“大规模PL/SQL开发”那章,描述了他在管理由170多位开发者维护的具有1100万行代码的应用中的成功经验,说明了PL/SQL是非常适合于这种任务的。
  不难看出我为这本书感到兴奋。作者都是顶级专家,分别介绍了自己热衷的并且特别在行的PL/SQL的某个方面。如果你已经学习了语法,那么坐下来读一读这本书,充分利用PL/SQL和Oracle数据库的强大功能,投身到开发应用程序的事业中来吧!
  Jonathan Gennick
  Apress编辑主任助理
  “本书作者阵容强大,内容全面实用,期待更多这种形式的技术书。”
  ――亚马逊读者评论
770)this.width=770;' />
同类热销商品¥108.00¥81.00
订单处理配送
北京奥维博世图书发行有限公司 china-pub,All Rights ReservedSQL查询如何将查询到数据表中的数字替换成*号显示?直接sql语句操作实现或C#判断语句实现?
[问题点数:20分,无满意结帖,结帖人ruyibaby]
SQL查询如何将查询到数据表中的数字替换成*号显示?直接sql语句操作实现或C#判断语句实现?
[问题点数:20分,无满意结帖,结帖人ruyibaby]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2010年4月 荣获微软MVP称号
2008年10月 MS-SQL Server大版内专家分月排行榜第二2008年6月 MS-SQL Server大版内专家分月排行榜第二
2010年4月 荣获微软MVP称号
2008年10月 MS-SQL Server大版内专家分月排行榜第二2008年6月 MS-SQL Server大版内专家分月排行榜第二
2008年11月 MS-SQL Server大版内专家分月排行榜第三2008年10月 MS-SQL Server大版内专家分月排行榜第三2006年7月 MS-SQL Server大版内专家分月排行榜第三
2008年11月 MS-SQL Server大版内专家分月排行榜第三2008年10月 MS-SQL Server大版内专家分月排行榜第三2006年7月 MS-SQL Server大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。《oracle pl/sql实战》共15章,分别由15位业内顶级专家担纲撰写。一条sql语句的误用,可能导致作业的运行时间增加几百倍,riyaj shamsudeen巧妙地回答了何时使用pl/sql这一问题;michael rosenblum说明了如果只有到最终运行时,才知道所要运行的sql语句到底是什么,那该如何编写代码;dominic delmolino介绍了用pl/sql进行并行处理的方法,以及这样能获得的益处和产生的额外负担。《oracle pl/sql实战》还有更多精彩内容等待读者一探究竟。 《oracle pl/sql实战》适合有一定pl/sql基础的读者学习。
john beresniewicz(约翰?贝雷斯尼维奇)是位于加州红木城红木岸(redwood shores)的oracle总部技术团队的一名咨询顾问。他于2002年加入oracle,负责企业管理器的数据库性能领域,他对诊断和调优包、实时应用测试、支持工作台和exadata的设计作出了重要贡献。多年以来,他经常在oracle全球大会和其他会议上发言,发言主题包括数据库性能和pl/sql编程。他与steven fellerstein合著了oracle built-in packages(o’reilly&associates,1998年)一书,并且是oaktable网络的创始人之一。
adrian billington (阿德里安?比林顿)是应用设计、开发和性能调优方面的顾问。自1999年以来,一直从事oracle数据库方面的工作。他是www.oracle-developer.net网站的发起人,这个网站为oracle开发人员提供各种sql和pl/sql功能、实用工具和技术。阿德里安还是oracle ace,同时也是oaktable网络的成员。现在,他与妻子安吉和三个孩子:格鲁吉亚、奥利弗和伊莎贝拉一起居住在英国。
martin büchi (马丁?步琪)自2004年以来,任avaloq公司首席软件架构师。该公司是一个标准化的银行软件供应商,其产品基于oracle rdbms构建,包含1100万行pl/sql代码。他与两位同事一起设计了系统架构,并评审了170名全职pl/sql开发人员的设计和代码,以追求软件的简明、效率和健壮性。马丁经常在oracle大会上发言。2009年,他被oracle magazine评选为pl/sql年度开发人员。从事oracle数据库工作之前,马丁曾在面向对象的系统、形式化方法和近似记录匹配等领域工作。他拥有瑞士联邦技术研究所的硕士学位和芬兰土尔库计算机科学中心的博士学位。业余时间,马丁喜欢与他的家人一起进行各种户外运动。
melanie caffrey (梅拉妮?卡弗里)是oracle公司高级开发经理,为不同客户的业务需求提供前端和后端的oracle解决方案。她是多部技术出版物的合著者,包括oracle web application programming for pl/sql developers、oracle dba interactive workbook、oracle database administration: the complete video course等,这些书全部由prentice hall出版。她在纽约哥伦比亚大学的计算机技术与应用课程中指导学生,教授先进的oracle数据库管理和pl/sql开发。她也经常在oracle会议上发言。
ron crisco(罗恩?克里斯科)28年来分别担任软件设计师、开发人员和项目负责人,并有21年的oracle数据库工作经验。他在r方法(method r)公司从事软件设计和开发、软件产品管理(如r方法剖析器、mr工具和mr跟踪)、咨询、教授课程等工作。他的特长是简化复杂的工作,这在帮助他身边的人完成非凡工作时尤显宝贵。
lewis cunningham(刘易斯?坎宁安)在it领域已经工作了20多年。自1993年以来一直与oracle数据库打交道。他的专长是应用程序设计、数据库设计,以及大容量的vldb数据库编码。目前他任职于佛罗里达州圣彼得堡的一家金融服务公司,担任高级数据库架构师,负责超大规模、高事务率分析型数据库和应用程序的工作。他花了大量时间来与最新的技术和趋势保持同步,并在用户组发表演讲,举办网络研讨会。刘易斯也是一位oracle ace总监和oracle认证专家。他在oracle技术网发表了数篇文章,并在/ blogs/oracle-guide维护一个oracle技术博客。刘易斯写了两本书:enterprisedb: the definitive reference(rampant tech press,2007年)和sql dml: the sql starter series(createspace,2008年)。他与他的妻子及两个儿子起住在佛罗里达州。可以通过电子邮件与他联系。
dominic delmolino (多米尼克?德莫里诺)是agilex技术公司首席oracle和数据库技术专家,这是一家专门协助政府和私营企业实现信息价值的咨询公司。多米尼克拥有24年以上的数据库经验,其中担任过20多年的oracle数据库工程和开发专家。他是oaktable网络的成员,并定期出席各种学术会议、研讨会,以及欧洲和美国的用户组会议。他还维护网站,该网站专注于与数据库应用程序开发相关的数据库编码和设计实践。多米尼克拥有纽约州伊萨卡康奈尔大学的计算机科学学士学位。
sue harper (苏?哈珀)是数据库开发工具组中的oracle sql developer和sql developer数据建模器的产品经理。她自1992年以来一直在oracle公司工作,目前在伦敦办事处工作。苏是一些杂志的特约撰稿人,维护着一个技术博客,并在世界各地的许多会议上发言。她撰写了技术书籍oracle sql developer 2.1(packt,2009),业余时间,苏喜欢步行和摄影。同时,她还花时间到新德里的贫民区做慈善工作,帮助那里的妇女和儿童。
torben holm (托尔?霍尔姆)自1987年以来一直从事开发工作。自1992年以来,他一直致力于与oracle相关的工作,前四年担任系统分析师和应用程序开发人员(oracle 7、forms 4.0/reports 2.0和dba),然后做了两年开发(oracle6/7、forms 3.0和rpt以及dba)。他在oracle丹麦公司的高级服务组工作了数年,担任首席高级顾问,执行应用程序开发和dba任务。他还担任过pl/sql、sql和dba课程的讲师。现在,托尔在miracle a/s(www.miracleas.dk)工作,担任顾问,负责应用开发(plsql、mod_plsql、forms、adf)和数据库管理。10年来他一直在 miracle a/s公司工作。他是oracle认证开发人员,并且也是oaktable网络成员。
connor mcdonald (康纳?麦当劳)自20世纪90年代初一直从事oracle相关工作,他非常熟悉oracle 6.0.36和oracle 7.0.12。在过去11年中,康纳曾为位于西欧、东南亚、澳大利亚、英国和美国的公司开发过系统。他已经认识到,虽然世界各地的系统及方法非常多样,但开发在oracle上运行的系统往往有两个共同的问题:要么避免使用oracle特定的功能,要么就是采取不太理想的用法或随意乱用它们。正是这种观察,促使他创建了一个提示和技巧的个人网站(www.oracledba.co.uk),并努力在oracle演讲者组织中发表更多演讲,以提高pl/sql的业内认知度和普及度。
arup nanda (奥雅纳?南大)自1993年以来,一直是oracle dba,他熟悉数据库管理的所有方面,从建模到灾难恢复。目前,他在纽约州白原市的喜达屋酒店(即喜来登、威斯汀等连锁酒店的母公司)领导全球dba团队。他是独立oracle用户协会(ioug)旗下出版物select journal的特约编辑,在许多oracle技术盛会,如oracle全球和本地用户组(如纽约oracle用户组)中发表演讲,并为印刷出版物如oracle magazine和网络出版物如oracle techndogy network撰写了许多文章。奥雅纳与他人合著了两本书:oracle privacy security auditing(rampant,2003年)和oracle pl/sql for dbas(o’reilly,2005年)。由于他的专业成就和对用户社区的贡献,oracle评选他为2003年年度dba。奥雅纳与他的妻子anindita和儿子阿尼什住在康涅狄格州的丹伯里。可以通过联系他。
stephan petit (斯蒂芬?佩蒂特)于1995年在位于瑞士日内瓦的欧洲粒子物理实验室(cern)开始了他的职业生涯。他现在是一个软件工程师和学生团队的负责人,负责为实验室和其他部门提供应用程序和工具。工程和设备数据管理系统是这些工具之一,也称为cern edms。像cern的大型强子对撞机(lhc)项目有40年或以上的生命周期。 edms是实验室的数字化工程的内存/记忆体。电子文件管理系统中存储了与一百多万件设备有关的一百多万份文件,edms也供cern的产品生命周期管理(plm)和资产跟踪系统使用。 edms几乎完全是基于pl/sql的,并旨在拥有一个至少与lhc一样长的生命周期。
斯蒂芬和他的团队一直在完善pl/sql编码规范和最佳实践,以满足他们非常有趣的各种挑战的组合:几十年的可维护性、可靠性、高效的错误处理、可扩展性、模块的可重用性。团队成员的频繁轮换,其中大部分只是暂时在cern实习的学生,加剧了这些挑战。最古老的一段代码是在1995年写的,现在仍然在使用――并且成功地运行!除了完善pl/sql,斯蒂芬还喜欢不时登台表演,比如担任cern摇滚夏季音乐节的摇滚乐队歌手,以及在多部戏中出演角色。
michael rosenblum (迈克尔?罗森布鲁姆)是dulcian公司的软件架构师/开发dba,他负责系统调优和应用程序架构。迈克尔通过编写复杂的pl/sql例程和研究新功能支持dulcian开发人员。他是pl/sql for dummies(wiley,2006年)一书的作者之一,并在ioug select journal和odtug tech journal发表了许多篇与数据库相关的文章。迈克尔是一位oracle ace,也经常出席不同地区和国家的oracle用户组大会(oracle openworld大会、odtug、ioug collaborate、rmoug、nyoug等),他是odtug万花筒2009年“最佳演讲奖”得主。在他的家乡乌克兰,他获得了乌克兰总统奖学金,并拥有信息系统理学硕士学位并以优异成绩获得基辅国立经济大学毕业证书。
robyn sands (罗宾?桑兹)是思科系统公司的软件工程师,她为思科的客户设计和开发嵌入式oracle数据库产品。自1996年以来,她一直使用oracle软件,并在应用开发、大型系统实现和性能测量方面具有丰富经验。罗宾的职业生涯始于工业工程和质量工程,她将自己对数据的挚爱结合到以前接受的教育和工作经验中,寻找新方法来建立性能稳定、易于维护的数据库系统。她是oaktable网络成员,并是下面两本oracle书籍的作者之一:expert oracle practices和pro oracle sql(都由apress出版,2010)。罗宾偶尔在http://adhdocddba. 发表一些博客。
riyaj shamsudeen是orainternals公司首席数据库管理员和主席,这是一家从事性能调优/数据库恢复/ebs11i等领域的咨询公司。他专门研究真正的应用集群(rac)、性能调优和数据库内部结构。他还经常在其博客上发表这些技术领域的文章。他也经常出席许多国际会议,如hotsos、collaborate、rmoug、sioug、ukoug等,他是oaktable网络的骄傲一员。他拥有16年以上使用oracle技术产品的经验,并担任了15年以上的oracle/oracle应用程序数据库管理员。
1995年参加工作,高级程序员、系统分析师、高级工程师。2004年起接触oracle数据库,获得oracle数据库管理9i至11g、pl/sql开发、性能优化、rac管理、数据仓库等多个ocp、oce、ocs认证。itpub社区oracle开发版版主,《剑破冰山――oracle开发艺术》一书合著者。做过需求分析、系统分析、架构设计、数据库和应用程序性能优化等工作。参与数次全国性普查数据处理系统的设计、开发和运维。
《oracle pl/sql实战》
第1章 避免误用 1
1.1 逐行处理 1
1.2 嵌套的逐行处理 3
1.3 查找式查询 5
1.4 对dual的过度访问 8
1.4.1 日期的算术运算 8
1.4.2 访问序列 9
1.4.3 填充主-从行 9
1.5 过多的函数调用 10
1.5.1 不必要的函数调用 10
1.5.2 代价高昂的函数调用 12
1.6 数据库链接调用 14
1.7 过度使用触发器 15
1.8 过度提交 15
1.9 过度解析 16
1.10 小结 16
第2章 动态sql:处理未知 18
2.1 动态sql的三种方式 19
2.1.1 本地动态sql 19
.2.1.2 动态游标 21
2.1.3 dbms_sql 25
2.2 动态思考的样例 26
2.3 安全问题 30
2.4 性能和资源利用率 33
2.4.1 反模式 34
2.4.2 比较动态sql的实现 35
2.5 对象的依赖关系 37
2.5.1 负面影响 37
2.5.2 正面影响 37
2.6 小结 38
第3章 pl/sql和并行处理 39
3.1 为什么需要并行处理 39
3.2 影响并行处理的定律 40
3.3 大数据的崛起 40
3.4 并行与分布式处理 41
3.5 并行硬件体系结构 41
3.6 确定目标 42
3.6.1 加速 42
3.6.2 按比例扩展 43
3.6.3 并行度 43
3.7 用于并行处理的候选工作负载 43
3.7.1 并行和oltp 43
3.7.2 并行和非oltp工作负载 44
3.8 mapreduce编程模型 44
3.9 在使用pl/sql之前 45
3.10 可用于并行活动的进程 45
3.11 使用mapreduce的并行执行服务器 46
3.11.1 管道表函数 46
3.11.2 指导 60
3.11.3 并行管道表函数小结 61
3.12 小结 61
第4章 警告和条件编译 62
4.1 pl/sql 警告 62
4.1.1 基础 62
4.1.2 使用警告 63
4.1.3 升级警告为错误 67
4.1.4 忽略警告 68
4.1.5 编译和警告 69
4.1.6 关于警告的结束语 72
4.2 条件编译 72
4.2.1 基础 72
4.2.2 正在运行代码的哪部分 75
4.2.3 预处理代码的好处 76
4.2.4 有效性验证 78
4.2.5 控制编译 80
4.2.6 查询变量 81
4.2.7 关于条件编译的结束语 82
4.3 小结 84
第5章 pl/sql单元测试 85
5.1 为什么要测试代码 85
5.2 什么是单元测试 86
5.2.1 调试还是测试 86
5.2.2 建立测试的时机 86
5.3 单元测试构建工具 87
5.3.1 utplsql:使用命令行代码 87
5.3.2 quest code tester for oracle 87
5.3.3 oracle sql developer 88
5.4 准备和维护单元测试环境 88
5.4.1 创建单元测试资料档案库 89
5.4.2 维护单元测试资料档案库 90
5.4.3 导入测试 91
5.5 构建单元测试 91
5.5.1 使用单元测试向导 91
5.5.2 创建第一个测试实施 92
5.5.3 添加启动和拆除进程 93
5.5.4 收集代码覆盖率统计信息 93
5.5.5 指定参数 93
5.5.6 添加进程验证 94
5.5.7 保存测试 95
5.5.8 调试和运行测试 95
5.6 扩大测试的范围 95
5.6.1 创建查找值 96
5.6.2 植入测试实施 97
5.6.3 创建动态查询 98
5.7 支持单元测试功能 99
5.7.1 运行报告 99
5.7.2 创建组件库 100
5.7.3 导出、导入和同步测试 103
5.7.4 构建套件 105
5.8 从命令行运行测试 105
5.9 小结 106
第6章 批量sql操作 107
6.1 五金商店 107
6.2 设置本章的例子 108
6.3 在pl/sql中执行批量操作 108
6.3.1 批量获取入门 110
6.3.2 三种集合风格的数据类型 112
6.3.3 为什么要自找麻烦 114
6.3.4 监控批量收集的开销 116
6.3.5 重构代码以使用批量收集 119
6.4 批量绑定 127
6.4.1 批量绑定入门 127
6.4.2 度量批量绑定性能 128
6.4.3 监视内存的使用 131
6.4.4 11g中的改进 133
6.5 批量绑定的错误处理 134
6.5.1 save exceptions和分批操作 137
6.5.2 log errors子句 138
6.5.3 健壮的批量绑定 139
6.6 大规模集合的正当理由 143
6.7 真正的好处:客户端批量处理 145
6.8 小结 149
第7章 透识你的代码 151
7.1 本章内容取舍 152
7.2 自动代码分析 153
7.2.1 静态分析 154
7.2.2 动态分析 154
7.3 执行分析的时机 154
7.4 执行静态分析 156
7.4.1 数据字典 156
7.4.2 pl/scope 163
7.5 执行动态分析 175
7.5.1 dbms_profiler和dbms_trace 175
7.5.2 dbms_hprof 184
7.6 小结 189
第8章 合同导向编程 190
8.1 契约式设计 190
8.1.1 软件合同 190
8.1.2 基本合同要素 191
8.1.3 断言 192
8.1.4 参考文献 192
8.2 实现pl/sql合同 192
8.2.1 基本的assert程序 192
8.2.2 标准的包本地断言 194
8.2.3 使用assert执行合同 196
8.2.4 其他改进 198
8.2.5 合同导向函数原型 199
8.3 示例:测试奇数和偶数 200
8.4 有用的合同模式 202
8.4.1 用not null输入且输出not null 202
8.4.2 函数返回not null 203
8.4.3 布尔型函数返回not null 203
8.4.4 检查函数:返回true或assertfail 204
8.5 无错代码的原则 205
8.5.1 严格地断言先决条件 205
8.5.2 一丝不苟地模块化 206
8.5.3 采用基于函数的接口 206
8.5.4 在assertfail处崩溃 207
8.5.5 对后置条件进行回归测试 207
8.5.6 避免在正确性和性能之间取舍 207
8.5.7 采用oracle 11g优化编译 208
8.6 小结 209
第9章 从sql调用pl/sql 210
9.1 在sql中使用pl/sql函数的开销 210
9.1.1 上下文切换 211
9.1.2 执行 216
9.1.3 欠理想的数据访问 218
9.1.4 优化器的难点 222
9.1.5 读一致性陷阱 226
9.1.6 其他问题 228
9.2 降低pl/sql函数的开销 228
9.2.1 大局观 229
9.2.2 使用sql的替代品 230
9.2.3 减少执行 236
9.2.4 协助cbo 244
9.2.5 调优pl/sql 255
9.3 小结 257
第10章 选择正确的游标 258
10.1 显式游标 258
10.1.1 解剖显式游标 260
10.1.2 显式游标和批量处理 261
10.1.3 ref游标简介 262
10.2 隐式游标 263
10.2.1 解剖隐式游标 264
10.2.2 隐式游标和额外获取的理论 265
10.3 静态ref游标 267
10.3.1 详细的游标变量限制清单 269
10.3.2 客户端和ref游标 270
10.3.3 有关解析的话题 271
10.4 动态ref游标 273
10.4.1 例子和最佳用法 273
10.4.2 sql注入的威胁 275
10.4.3 描述ref游标中的列 276
10.5 小结 277
第11章 大规模pl/sql编程 279
11.1 将数据库作为基于pl/sql的应用服务器 279
11.1.1 案例研究:avaloq银行系统 279
11.1.2 在数据库中使用pl/sql实现业务逻辑的优势 281
11.1.3 用数据库作为基于pl/sql的应用程序服务器的限制 283
11.1.4 软因素 284
11.2 大规模编程的要求 284
11.3 通过规范实现一致性 285
11.3.1 缩写词 286
11.3.2 pl/sql标识符的前缀和后缀 289
11.4 代码和数据的模块化 291
11.4.1 包和相关的表作为模块 293
11.4.2 含有多个包或子模块的模块 297
11.4.3 模式作为模块 299
11.4.4 在模式内部模块化 303
11.4.5 用模式模块化与在模式内模块化的比较 306
11.5 使用pl/sql面向对象编程 306
11.5.1 使用用户定义类型的面向对象编程 307
11.5.2 使用pl/sql记录面向对象编程 310
11.5.3 评估 316
11.6 内存管理 317
11.6.1 测量内存使用 317
11.6.2 集合 322
11.7 小结 325
第12章 渐进式数据建模 326
12.1 从二十年的系统开发中总结的经验 327
12.2 数据库和敏捷开发 328
12.3 渐进式数据建模 329
12.4 重构数据库 331
12.5 通过pl/sql创建访问层 335
12.6 敏捷宣言 347
12.7 用pl/sql进行渐进式数据建模 349
12.7.1 定义接口 349
12.7.2 思考可扩展性 349
12.7.3 测试驱动开发 350
12.7.4 明智地使用模式和用户 350
12.8 小结 351
第13章 性能剖析 352
13.1 何谓性能 353
13.1.1 功能需求 353
13.1.2 响应时间 353
13.1.3 吞吐量 354
13.1.4 资源利用率 354
13.1.5 性能是功能的一种 355
13.2 什么是剖析 356
13.2.1 顺序图 356
13.2.2 概要文件之神奇 357
13.2.3 性能剖析的好处 357
13.3 性能测量 358
13.3.1 这个程序为什么慢 358
13.3.2 测量嵌入 360
13.3.3 识别 360
13.3.4 条件编译 364
13.3.5 内建的剖析器 365
13.3.6 扩展的sql跟踪数据(事件1
13.3.7 针对oracle的测量工具库(ilo) 366
13.4 问题诊断 368
13.4.1 r方法 369
13.4.2 ilo示例 371
13.4.3 剖析示例 373
13.5 小结 376
第14章 编码规范和错误处理 378
14.1 为什么要制订编码规范 378
14.2 格式化 379
14.2.1 大小写 379
14.2.2 注释 380
14.2.3 比较 380
14.2.4 缩进 380
14.3 动态代码 383
14.4 包 384
14.5 存储过程 385
14.5.1 命名 385
14.5.2 参数 386
14.5.3 调用 386
14.5.4 局部变量 386
14.5.5 常量 386
14.5.6 类型 387
14.5.7 全局变量 387
14.5.8 本地存储过程和函数 387
14.5.9 存储过程元数据 388
14.6 函数 388
14.7 错误处理 389
14.7.1 错误捕获 389
14.7.2 错误报告 390
14.7.3 错误恢复 391
14.7.4 先测试再显示 392
14.8 小结 392
第15章 依赖关系和失效 395
15.1 依赖链 395
15.2 缩短依赖链 401
15.3 数据类型引用 406
15.4 用于表修改的视图 407
15.5 把组件添加到包 410
15.6 依赖链中的同义词 413
15.7 资源锁定 414
15.8 用触发器强制执行依赖 415
15.9 创建最初禁用的触发器 418
15.10 小结 420
2010年,我参与编写了一本有关Oracle开发的书《剑破冰山:Oracle开发艺术》,这本书的重点是SQL编程,因此曾想过再写一本关于PL/SQL开发的书。2011年10月,在《剑破冰山:Oracle开发艺术》上市大约1周年的时候,我在图灵公司的网站发现了本书英文版正在征集译者,看了下目录,感觉它提到了很多我想表达的内容,而且比较全面、系统。于是,就萌生了翻译的想法。本书由15位作者共同编写,每人负责一章,所以每章都能独立成篇。而把各章内容结合到一起,又基本上涵盖了PL/SQL开发的各个方面。需要指出一点,本书不是PL/SQL入门教材,读者需要有一定PL/SQL基础。实际上,本书大部分内容在Oracle官方的培训计划中属于高级课程Oracle Database 11g: Advanced PL/SQL的范畴。
决定挑战这个任务后,我通过图灵副总经理谢工联系到了傅志红副总经理,有幸通过了试译。这本书英文原作有500多页,加上我之前还没有翻译过这么大规模的文字,所以觉得一人翻译在时间上有些吃紧,因此想邀请上本书的几位合著者共同翻译。不过由于各种原因没有成功,最终我还是独自承担了这个任务,在5个月的时间里,完成了初译、复查、修改等工作。
如果没有大家的帮助,我一个人无法完成这本译作。
首先感谢老战友苏旭晖(ITPUB Oracle开发版版主,网名newkid),他现定居加拿大多伦多,从事数据库应用系统的设计与开发工作。虽未见面,但他在我翻译的5个多月时间里,一直不辞辛劳地帮助我解决多处语言和技术难点,并给出了更好的译法。更难得的是,对原书个别不合理的叙述,提出了中肯的意见,使读者不仅能通过本书了解原作者的观点,还能引发进一步的思考。
其次感谢我妻子李颖,她是英语专业毕业生,作为本书的第一读者,帮助我检查出很多生硬的译文,并把它们修改得更加通顺。得益于她的修改,本书才有现在的可读性。同时,她还承担了培养教育孩子的重任,使我可以专心翻译本书。
还要感谢老大哥贾书民,他有10多年的Oracle开发经验,做过许多基于Oracle的大型项目,他通读了我的译文,提出了许多中肯的修改建议。在我试译时,他也帮助我对译文做了很多修改,对我顺利通过试译起到了很大的作用。
感谢图灵公司李鑫编辑、李静编辑、李松峰主任,他们对译文进行把关,并对语言进行润色,使表达更加地道。
最后希望这本书能帮助读者提高Oracle PL/SQL开发水平。由于译者经验和水平有限,译文中难免有不妥之处,恳请读者批评指正!
作为图书编辑,我一般满足于在幕后做好自己的编辑工作,很少站到前台来为我负责编辑的图书作序。但是,这次我却破例了。因为我也曾做过开发,这本书的内容勾起了我的很多回忆。
本书旨在教你如何有效地使用PL/SQL。它不是描述语法的书,而是介绍如何把语法及其特性与良好的开发实践相结合,创建更具有可靠性、可扩展性的应用,并使之具备长期可维护性。
不管使用什么工具,首先需要明白的是在什么情况下使用它比较合适。在本书的开篇章节“避免误用”中,Riyaj Shamsudeen巧妙地回答了何时使用PL/SQL这一问题。我把这一章放在本书的开始,也是因为我个人的经历:那是在20世纪90年代末,我进行了最成功的一次性能优化,那次我把客户端PC上的一堆过程代码改写为一个SQL语句以后,一个作业的运行时间从超过36小时缩短到仅仅几分钟。虽然PL/SQL不是导致性能问题的罪魁祸首,但是我得到了一条经验――基于集合的方法(如果有可能)通常优于过程性代码。
Michael Rosenblum紧接着写了动态SQL那一章,其内容相当精彩。他说明了如果只有到最终运行时才知道所要运行的SQL语句到底是什么,那么该如何编写代码。这使我想起20世纪90年代初的一段经历,那时我在陶氏化学公司利用Rdb的扩展动态游标功能集,为一个医疗记录系统写数据装载应用程序。我感觉那是我开发过的最有趣的应用程序之一。
Dominic Delmolino介绍了用PL/SQL 进行并行处理的方法,以及这样能获得的益处和产生的额外负担。谨小慎微,永不为过!我在当数据库管理员时犯下的最大错误之一就是,有一次头脑一热,在一个关键的应用表上设置了一个并行度,其目的是为了想让其中的一个报表程序运行得更快。可是,事与愿违。好像键盘上的回车键连着我的电话似的,修改后大约不到一分钟,我的电话铃就响了,电话线另一端的主管对我的修改非常不满。无须多言,从此我就决定在实施并行前一定要深思熟虑。Dominic写的那章可以帮助我们避免陷入这样的窘境。
本书的多章内容涵盖了代码规范和极其实用的编程经验。Stephan Petit向我们介绍了一套实用的命名和编码规范。Torben Holm讲述了PL/SQL警告和条件编译。Lewis Cunningham阐述了代码分析,使我们认识到真正理解自己所写的代码及其工作原理的重要性,发人深思。Robyn Sands的“渐进式数据建模”一章,令我们对渐进式数据模型的良好设计及灵活性有了更多的思考。Melanie Caffrey介绍了经常使用的各种游标类型,帮助我们在不同条件下正确地选择游标。
其他章节介绍如何进行调试和故障排除。Sue Harper介绍了PL/SQL单元测试,特别是一些如今已经集成在SQL Developer中的功能集(这使我想起了在纸上写单元测试脚本的日子),它可以帮助避免犯回归错误。利用自动化单元测试,能够容易且方便地验证程序,以确保自己不会在修复一个错误的同时制造了更多的错误。
还有John Beresniewicz介绍“合同导向编程”那一章。John给出的方法的一个关键部分是,在代码的各种特定地方使用断言来验证条件。记得我首次了解断言技术是在做PowerBuilder编程时,那已经是很久很久以前的事了。我很高兴看到John把这项技术和PL/SQL联系起来,将其发扬光大。
Arup Nanda的论述能够帮助我们控制依存和失效问题。依存问题可能会导致发生类似随机的、难以重现的应用程序错误。Arup展示了如何完全掌控那些必将发生的事情,这样你才不会落入意外错误的陷阱。
一般情况下,我们不得不考虑性能和扩展性。Ron Crisco告诉我们通过剖析代码,找到尽可能优化代码的方法。Adrian Billington讨论了从SQL语句中调用PL/SQL的性能问题。Connor McDonald论述了批量SQL操作惊人的性能优势。
关于可扩展性,通常会被遗漏的一面是应用程序的规模和参与开发的人数。PL/SQL是否适合数十到数百位程序员的大规模开发?Martin Büchi在“大规模PL/SQL开发”那章,描述了他在管理由170多位开发者维护的具有1100万行代码的应用中的成功经验,说明了PL/SQL是非常适合于这种任务的。
不难看出我为这本书感到兴奋。作者都是顶级专家,分别介绍了自己热衷的并且特别在行的PL/SQL的某个方面。如果你已经学习了语法,那么坐下来读一读这本书,充分利用PL/SQL和Oracle数据库的强大功能,投身到开发应用程序的事业中来吧!
Jonathan Gennick
Apress编辑主任助理
“本书作者阵容强大,内容全面实用,期待更多这种形式的技术书。”
――亚马逊读者评论
770)this.width=770;' />
相关品牌分类
购物网址大全
Oracle PL/SQL实战(汇聚Oracle专家集体智慧,DBA修炼内力必读秘籍)报价为64.97,以上所显示的Oracle PL/SQL实战(汇聚Oracle专家集体智慧,DBA修炼内力必读秘籍)价格等详情是从互动出版网网站同步过来的或智购网购物搜索引擎自动搜索形成的索引快照信息(商品信息未经审核,快照亦可能未经更新),如欲购买请以互动出版网网站上的Oracle PL/SQL实战(汇聚Oracle专家集体智慧,DBA修炼内力必读秘籍)报价为准。}

我要回帖

更多关于 plsql查询乱码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信