Oracle Built-in Packages by Steven Feuerstein, Charles Dye, and John Beresniewicz Following are the changes made in the 1/01 reprint. 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 (xviii) The contents of the "How to Contact Us" section have been updated. It now reads: How to Contact Us We have tested and verified the information in this book to the best of our ability, but you may find that features have changed (or even that we have made mistakes!). Please let us know about any errors you find, as well as your suggestions for future editions, by writing to: O'Reilly & Associates 101 Morris Street Sebastopol, CA 95472 (800) 998-9938 (in the United States or Canada) (707) 829-0515 (international or local) (707) 829-0104 (fax) There is a web site for the book, where we list examples, errata, and any plans for future editions. You can access this page at: http://www.oreilly.com/catalog/oraclebip/ To ask technical questions or comment on the book, send email to: bookquestions@oreilly.com For more information about our books, conferences, software, Resource Centers, and the O'Reilly Network, see our web site at: http://www.oreilly.com If you have any questions about the disk supplied with this book, contact RevealNet, Inc. at: http://www.revealnet.com (32) The seventh line of code did read: RAISE_APPLICATION_ERROR (-20102, 'Invalid operation); It now reads: RAISE_APPLICATION_ERROR (-20102, 'Invalid operation'); (76) The 4th entry in the "Description" column of the table did read: "one or more colum values" Now reads: "one or more column values" <90> In the second line of the first paragraph and in the third line in the code sample, changed "DBMS_SQL.DESC_T" to "DBMS_SQL.DESC_TAB". {138} In the second bulleted item, the last line of code now reads: DBMS_SQL.DEFINE_ARRAY... (not DEFINE_COLUMN) {163} Removed RESET_PIPE from the list in the first paragraph. {202} Lines 11-14 in the code sample did read: message_tblmessage_tbltype; call_statusINTEGER; /* empty table used to free and release memory */ null_message_tblmessage_tbltype; Three of these lines were missing spaces. They now read: message_tbl message_tbltype; call_status INTEGER; /* empty table used to free and release memory */ null_message_tbl message_tbltype; (214) The last example on the page did read: "The following example sets the polling interval to one second:" It now reads: "The following example sets the polling interval to ten minutes:" {375} The second line after the section "Enabling and Disabling Output" did read: "The Enable ... from DBMS_OUTPUT.PUT_LINE (and PUT and PUTF) procedure." Now reads: "The Enable ... from DBMS_OUTPUT.PUT_LINE (and PUT) procedure." {400} The seventh and eighth lines of code on the page did read: UTL_FILE.PUT_LINE (TO_CHAR (emprec.empno) || ..... Now read: UTL_FILE.PUT_LINE (fileID,TO_CHAR (emprec.empno) || ..... (405) In the third-to-last line on the page, changed "OTHRES" to "OTHERS". {411} The first sentence in the second-to-last paragraph on the page did read: "We can conclude from this test that the IS_OPEN function returns TRUE if the id field of a UTL_FILE.FILE_TYPE record is NULL." Now reads: "We can conclude from this test that the IS_OPEN function returns FALSE if the id field of a UTL_FILE.FILE_TYPE record is NULL." {451} The first code example did read: SELECT chapter_descr, chapter_text FROM my_book_text WHERE chapter_descr = '&1' ROLLBACK; EXEC DBMS_OUTPUT.PUT_LINE ('Rollback completed'); SELECT chapter_descr, chapter_text FROM my_book_text WHERE chapter_descr = '&1' END; / Now reads: SELECT chapter_descr, chapter_text FROM my_book_text WHERE chapter_descr = '&1'; ROLLBACK; EXEC DBMS_OUTPUT.PUT_LINE ('Rollback completed'); SELECT chapter_descr, chapter_text FROM my_book_text WHERE chapter_descr = '&1'; END; / (Added semi-colons after each '&1'.) {452} The third code example on the page ended with a comma instead of a semi- colon. It did read: CREATE OR REPLACE PACKAGE blobby IS TYPE adpage_rectype IS RECORD ( customer_id NUMBER, persuasive_picture BFILE ), Now reads: CREATE OR REPLACE PACKAGE blobby IS TYPE adpage_rectype IS RECORD ( customer_id NUMBER, persuasive_picture BFILE ); {453} The third code example on the page ended with a comma instead of a semi- colon. It did read: CREATE OR REPLACE PACKAGE chapter IS TYPE diagram_rectype IS RECORD ( chapter_num NUMBER, diagram BLOB ), Now reads: CREATE OR REPLACE PACKAGE chapter IS TYPE diagram_rectype IS RECORD ( chapter_num NUMBER, diagram BLOB ); {454} The first code example on the page ended with a comma instead of a semi- colon. It did read: IS TYPE poll_results_rectype IS RECORD ( speech_num NUMBER, speech_txt CLOB ), Now reads: IS TYPE poll_results_rectype IS RECORD ( speech_num NUMBER, speech_txt CLOB ); {467} The fifth line of the second code example did read: PROCEDURE check_open (loc IN BFILE, descr IN VARCHAR2) Now reads: PROCEDURE check_open (loc IN BFILE, descr IN VARCHAR2); (colophon) The second-to-last paragraph did read: "our books use RepKover, a durable and flexible lay-flat binding. If the page count exceeds RepKover's limit..." Now reads: "our books use a durable and flexible lay-flat binding. If the page count exceeds this binding's limit..."