MySQL Stored Procedure Programming, First Edition by Guy Harrison with Steven Feuerstein This errata page lists errors outstanding in the most recent printing. If you have technical questions or error reports, you can send them to booktech@oreilly.com. Please specify the printing date of your copy. This page was updated April 18, 2007. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification Confirmed errors: p. xx after the 3rd paragraph; insert: You may notice that some examples end in "$$" rather than ";": this is because most stored program code is shown as it would appear in the MySQL Query Browser. When you create a stored procedure in most environments (including the MySQL query browser ) you need to change the DELIMITER setting to avoid errors when MySQL sees a ";" in the stored procedure and interprets that as the end of the CREATE PROCEDURE statement. By default the MySQL Query Browser uses "$$" as that delimiter, which is why some examples end in "$$" - because they were created in the query browser. {11} Example 1-5, line 14; Line 14 of code is missing underscore: 1 dupkey_indicator should read: 1_dupkey_indicator Also, in example downloads, Example 1-5 file is the 1-6 code. [134] Table 6-1; MySQL error code 1312 states: 'SELECTin a storedprogram must have INTO', whereason p. 112, last paragraph but one, the text reads: '... result set is not associated with either an INTGO clause or a cursor. We call ... unbounded.' Contradiction? Author's response: The error code concerned has been reworded since that table was constructed and now reads "PROCEDURE %s can't return a result set in the given context". This occurs when the client program has not provided the CLIENT_MULTI_RESULTS flag during the initial connection. (137) 1st paragraph; "So, for instance, in Example 6-9, the first handler will be invoked if something catastrophic happens...while the second will fire..." should be: "So, for instance, in Example 6-9, the second handler will be invoked if something catastrophic happens...while the first will fire..." [217] Table 9-1; The description of function 'DECODE' reads: 'Decrypts a string that has been encrypted with ENCRYPT.'. Should read: 'Decrypts a string that has been encrypted with 'ENCODE'. [423] First GRANT statement GRANT EXECUTE [ON {PROCEDURE|FUNCTION}] database.program_name TO user should be: GRANT EXECUTE ON [{PROCEDURE|FUNCTION}] database.program_name TO user [488] Figure 21-1 Switch legend for "index" and "no index" ("no index" should be lighter) (605) 1st column, halfway down; SOUCE should be SOURCE