
The chapter summaries also tend to be dry rewordings that are best quickly skimmed. Some of the book's phrasing is just awkward, such as "Pipelined table functions refer to functions returning collections in a pipelined manner using the PIPELINED clause in the function signature and the PIPE ROW statement inside the function body." Recursion is wonderful, but not in technical definitions. Example code for each chapter is also downloadable, which is very convenient. Coding examples are abundant, and use two simple database schemas, available via download from the publisher's Web site. The writing style is informative, if a bit dry. The reader would be best served by having these limitations presented, so that both advantages and disadvantages can be fully evaluated. If you can't natively compile all PL/SQL programs, it's best to compile none of them. In addition, a performance hit is incurred when interpreted code calls natively compiled code, and vice versa. These limitations are not inconsequential: they include compiler compatibility (only one or two compilers are certified on each platform, and patching of the compiler is required), issues with the makefile process on multiple platforms, and the fact that the database administrator must manually manage shared library files. For example, native compilation is briefly discussed, but none of the limitations are mentioned. Missing is a discussion of the pros and cons of certain techniques. The topics in the performance section are primarily those outlined in Oracle's PL/SQL User's Guide and Reference, in the section on tuning PL/SQL applications. The chapter's table of contents includes a section entitled, "Some PL/SQL Tuning Procedures." These "procedures," however, are in fact simply some collected tips, rather than true procedures, which is a bit disappointing. Improvements could be made to the chapter on performance considerations. This is a minor annoyance, but is definitely a part of programming standards. In fact, the book's examples themselves don't follow one standard on capitalization. Missing from this chapter is any advice regarding formatting/capitalization standards for PL/SQL code. The chapter on coding standards contains several worthwhile guidelines. The author discusses object types and tables, as well as type evolution, inheritance, and dynamic method dispatch, and provides useful tips.

One of the book's pluses is its section on object-oriented features available in Oracle 8 and enhanced in 9i. Subsequent sections can be read independently. The first part consists of a single chapter, which offers a very brief introduction to PL/SQL and an overview of 9i new features. The use of procedural language/structured query language (PL/SQL) with Java stored procedures and Hypertext Markup Language (HTML) is covered in this book, alongside a discussion of the new features in Oracle 9i.
