Although Oracle has historically been the most popular database management system (DBMS), IBM is seriously challenging this position with DB2. In fact, some market studies now place DB2 slightly ahead of its rival [1]. Therefore, this book is very appropriately placed, in terms of interest. While it does not deal with the recent issues of autonomic computing that DB2 claims to do, it does deal with SQL PL, the main procedural language that lends life to those bland SQL scripts. From this point of view, this book makes a good contribution toward that effort.
The first two chapters introduce the basic concepts of SQL procedures, including the syntax of a DB2 CREATE procedure statement, some example procedures, basic SQL statements, rollback, and commit statements. Chapter 3 does a good job of describing the structure of various types of control flow statements, for example, FOR loop, WHILE loop, REPEAT statement, LOOP, GOTO, and RETURN. Chapter 4 deals with cursors, and discusses what they are and how to use them in a procedure. Chapter 5 discusses basic error handling and return code checking using SQLCODE and SQLSTATE, which are now the de facto standards in the industry for such tasks.
Chapters 6 through 10 cover various applications of stored procedures. Chapter 6 introduces the basic concept of preparing and executing dynamic SQL. Chapter 7 discusses more involved or nested procedures, especially how to return values and parameters from a nested call. Chapter 8 then discusses more advanced features of DB2: sequence objects, temporary tables, savepoints, and large objects. Chapter 9 deals with the deployment of SQL procedures. The last chapter of the book, chapter 10, describes the important aspects of working with triggers and functions, especially how to define user created ones.
The author should be congratulated for a very comprehensive set of appendices, to which over 100 pages are devoted. These appendices are very helpful for those familiar with SQL and other tools, as well as those familiar with DBMSs, but who have not had much experience with DB2. They explain very clearly what the CD-ROM (included with the book) contains, and how DB2 should be installed and invoked from such an installation. They also cover how to get started with simple commands to perform various tasks in DB2. Readers will find this to be very handy.
The book has been written in a very simple style, with chapters following one another in an intuitive and logical order. The summaries at the end of each chapter are helpful, and provide a quick overview. The book has been designed for database administrators (DBAs), application developers, and students who are going to use DB2 procedures for the first time. It succeeds quite well in this respect.