As any veteran software developer will tell you, one of the problems inherent in most programming books is that, while they offer a large amount of technical information, they provide no method whereby the reader can transform that information into lasting knowledge, other than the obvious process of reading the book's contents and hoping to retain that knowledge weeks after the book has been finished. Unlike technical textbooks aimed at students, few programming books contain engaging exercises that prompt the reader to use the information presented, thereby ensuring that the reader will truly understand — and in turn, internalize — the material. This may be the primary reason why experienced programmers often sign up for extension classes in order to learn new languages and other technologies, having realized that they lack the motivation to dig into their growing pile of dusty technical books, plow through all of those pages, and develop the sample applications that they know are undoubtedly the best way to learn a new language. Even the example code presented in the typical programming book does not facilitate hands-on development, since the code has already been written, and can be passively perused by the reader, with varying levels of attention. It is simply too easy to scan through the prose and the finished sample code, without actually comprehending and later remembering the details.
Mastering PL/SQL is no exception to this problem. There is certainly no shortage of informative and complete volumes on PL/SQL, as well as other aspects of Oracle database development and administration. But most if not all of them are written in the traditional pedantic style, which, while clearly the best format for reference books, does not encourage the new reader to exercise and thus really learn the information. For the PL/SQL student, the best solution yet may be the Oracle PL/SQL Developer's Workbook (published on 1 May 2000, ISBN 978-1565926745), written by the prolific Oracle author Steven Feuerstein, and published by O'Reilly & Associates.
In his book, Feuerstein takes the approach of presenting a large number of PL/SQL exercises (975 in all), as well as their solutions. They are all designed to actively engage the reader by encouraging the solving of programming problems, and applying what has been learned — presumably from other volumes, particularly his companion book, the well-regarded and best-selling Oracle PL/SQL Programming (also published by O'Reilly). In the workbook, the problems are grouped into three levels of proficiency (beginner, intermediate, and expert) for each topic. As a result, there is appropriate material for every PL/SQL programmer, regardless of their skill level. Each problem is accompanied by a complete solution, including all of the source code. The solutions are wisely located in the second part of the book, distant enough from the questions so as to discourage one from passively reading the solutions without attempting to figure them out on one's own.
The book attempts to cover all of the major features of PL/SQL, up to and including those introduced with Oracle8i. It contains 30 chapters, spanning 569 pages, in which are discussed basic language elements (variable declaration and naming, loops, conditional and sequential control, exception handling, and records), data structures (index-by tables, nested tables, variable arrays, and object technology), database interaction (cursors, DML and transaction management, cursor variables, and native dynamic SQL), program construction (procedures, functions, blocks, packages, database triggers, and calling PL/SQL functions from within SQL), built-in functionality (character, date, conversion, numeric, and miscellaneous functions; and DBMS_SQL, DBMS_PIPE, DBMS_OUTPUT, UTL_FILE, and DBMS_JOB built-in packages). Other topics are presented, including: using Java with PL/SQL, external programs, PL/SQL Web development, tuning PL/SQL, and PL/SQL from the perspective of DBAs.
If you best learn through real-world hands-on programming, then you will appreciate and gain considerably from this book. Feuerstein's solutions, sample code, and clear explanations reflect his commitment to the language and to the reader. This volume contains a wealth of practical PL/SQL programming techniques which the Oracle applications developer can readily apply to his or her immediate and future software tasks. Likewise, for the programmer seeking employment, this workbook can help jumpstart their proficiency in PL/SQL, as well as provide sample problems that can be used in preparation for job interviews.
One complaint, found on a bookseller's website, is that the book does not systematically work you through the solutions. But, in the sense, that is the whole point of this workbook, because it encourages the reader to actually work towards the solutions, rather than spoon-feeding them — which would make it easier for the reader, but in the end would provide less value.
One real weakness in this volume is the potential for some or much of the material to be below the skill level of the reader. For instance, if you are generally at the intermediate level of PL/SQL knowledge, then theoretically only two-thirds of the book will be valuable to you. Even worse, if you are fortunate enough to be a PL/SQL expert, then only one-third of the book will interest you. But an advantage of having problems available at three different skill levels is that every reader will benefit to some extent from this book, regardless of their individual PL/SQL proficiency. Realistically, given the complexity of PL/SQL, and the unsystematic learning from on-the-job "training", one will most likely benefit by working through the problems — and (afterwards!) seeing the solutions — supposedly intended for skill levels below one's own.
Unfortunately, the book is marred by a rather political dedication, which many readers may feel to be quite inappropriate for a technical work. This is not the only book by Feuerstein that contains such a statement; in fact, all of his books seen by this writer contain similar dedications. Fortunately, no other political statements were found anywhere else in this particular volume. It is quickly forgiven, when one reads in the preface his appreciation for his fellow Oracle technologists (who apparently helped tremendously with this effort), and for his legion of mutually appreciative readers.
All of the PL/SQL solutions written for this book can be downloaded from the O'Reilly website, as can the source code not included in the book because of space limitations, and the errata. In addition, there is a Companion Utilities Reference, developed by RevealNet (now part of Quest Software). This Windows utility allows the user to easily access all of the sample PL/SQL source code. Overall, Oracle PL/SQL Developer's Workbook is strongly recommended to any Oracle software developer looking to gain new skills and/or confirm their existing knowledge of PL/SQL programming. This excellent book confirms yet again that the best way to learn a new language, is to use it.