The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
| Version |
Location |
Description |
Submitted By |
Corrected |
| Printed |
Page 4
Last paragraph; |
"In 1991, Oracle Corporation released Version 6.0 ..."
NOW READS:
"In 1988, Oracle Corporation released Version 6.0 ..."
|
Anonymous |
Oct 2003 |
| Printed |
Page 15
IN PRINT: first line of the first example |
CREATE TYPE empnos_list_t IS VARRARY(100) OF NUMBER;
NOW READS:
CREATE TYPE empnos_list_t IS VARRAY(100) OF NUMBER;
|
Anonymous |
Feb 2003 |
| Printed |
Page 15
both examples |
CREATE OR REPLACE del_emps
NOW READS:
CREATE OR REPLACE PROCEDURE del_emps
|
Anonymous |
Feb 2003 |
| Printed |
Page 15
IN PRINT: del_emps procedure |
FORALL listnum IN list_in.FIRST .. list_in.LAST
LOOP
DELETE FROM ...
NOW READS:
FORALL listnum IN list_in.FIRST .. list_in.LAST
DELETE FROM ...
|
Anonymous |
Feb 2003 |
| Printed |
Page 17
Oracle 9i New Features, Record-based DML, concerning INSERT a row-level struture. |
INSERT INTO books VALUES (book_in);
NOW READS:
INSERT INTO books VALUES book_in;
|
Anonymous |
Sep 2004 |
| Printed |
Page 40
IN PRINT: Half way down |
SQL SET AUTOMCOMMIT OFF
NOW READS:
SQL SET AUTOCOMMIT OFF
|
Anonymous |
Feb 2003 |
| Printed |
Page 74
Last line above footnote |
"SQL> SELECT * FROM V$RESERVED_WORD;"
NOW READS:
"SQL> SELECT * FROM V$RESERVED_WORDS;"
pg 89 IN PRINT: 89, top
"provides a way to handle multiple, mutually exclusive alternatives. The general
format for this variation of the IF statement is:"
NOW READS:
"provides a way to handle multiple conditions within a single IF statement.
In general, you should use ELSIF with mutually exclusive alternatives (ie
only one condition can be TRUE for any execution of the IF statement). The
general format for this variation of IF is:"
|
Anonymous |
Feb 2003 |
| Printed |
Page 109
Section titled 'The simple loop' |
The second sentence reads: "Notice the IF statement used to guard against executing
the loop when the maximum rank is negative." There is no IF statement in the code.
|
Anonymous |
|
| Printed |
Page 109
IN PRINT: 5th row from the bottom |
Rows 4 and 5 from the bottom:
WHILE ranking_level <= max_rank_in
LOO
NOW READ:
WHILE ranking_level <= max_rank_in
LOOP
|
Anonymous |
Feb 2003 |
| Printed |
Page 119
line 4 |
FROM occupancy WHERE occupied_dt = TRUNC (SYSDATE;)
NOW READS:
FROM occupancy WHERE occupied_dt = TRUNC (SYSDATE);
the same error was repeated in the middle of the same page and is likewise CORRECTED.
|
Anonymous |
Sep 2004 |
| Printed |
Page 143
Bottom of code |
DBMS_OUTPUT.PUTLINE --(occurs twice without underscore)
NOW READS:
DBMS_OUTPUT.PUT_LINE
|
Anonymous |
Oct 2003 |
| Printed |
Page 161
Last declaration in the sample code section |
l_stevenCONSTANT person :=
NOW READS:
l_steven CONSTANT person :=
|
Anonymous |
Oct 2003 |
| Printed |
Page 199
IN PRINT: 2nd last para in CONCAT |
"...CONCAT(CONCAT('abc','def'),'efg')
NOW READS:
"...CONCAT(CONCAT('abc','def'),'ghi')
|
Anonymous |
Feb 2003 |
| Printed |
Page 221
Halfway down the page, first bulleted example |
The result of the first example was incorrectly listed without the trailing period.
-> 'Brighten the corner where you are'
NOW READS:
-> 'Brighten the corner where you are.'
|
Anonymous |
Oct 2003 |
| Printed |
Page 224
IN PRINT: 1st paragraph |
"...the word "ijzen" (Dutch for "iron")..."
NOW READS:
"...the word "ijzer" (Dutch for "iron")..."
|
Anonymous |
Feb 2003 |
| Printed |
Page 264
IN PRINT: Bottom - expiration_date function |
CREATE TABLE good_for
NOW READS:
CREATE TABLE shelf_life
|
Anonymous |
Feb 2003 |
| Printed |
Page 268
second to last line; missing a comma. |
SYEAR, YEAR SYear,
NOW READS:
SYEAR, YEAR, SYear,
|
Anonymous |
Oct 2003 |
| Printed |
Page 280
IN PRINT: 4th paragraph |
"With RR you can enter dates from the 21st century before the year 2000,
and dates from the 20th century (like the birthdays of employees and customers) after
the year 2000."
This sentences HAS BEEN DELETED.
pg 339 IN PRINT: 3rd paragraph, 1st line:
"...theoretical limits on an associative array..."
NOW READS:
"...theoretical limits on an associative array indexed by BINARY_INTEGER..."
pg 341 IN PRINT: 3rd section, TYPE example:
INDEX BY [ BINARY_INTEGER | VARCHAR2(size_limit)]
NOW READS:
INDEX BY [ BINARY_INTEGER | subtype of BINARY_INTEGER |
VARCHAR2(size_limit)]
pg 352. Specifications for DELETE method have replaced PLS_INTEGER references to:
[BINARY_INTEGER | VARCHAR2(size_limit)]
NOW READS:
PROCEDURE DELETE (i [BINARY_INTEGER | VARCHAR2(size_limit)];
PROCEDURE DELETE (i [BINARY_INTEGER | VARCHAR2(size_limit)], j [BINARY_INTEGER | VARCHAR2(size_limit)]);
pg 353 Specifications for EXIST header have replaced PLS_INTEGER references to:
[BINARY_INTEGER | VARCHAR2(size_limit)]
NOW READS:
FUNCTION EXISTS (i IN [BINARY_INTEGER | VARCHAR2(size_limit)]) RETURN BOOLEAN;
pg 356 - Specifications for PRIOR and NEXT headers have replaced PLS_INTEGER references to:
[BINARY_INTEGER | VARCHAR2(size_limit)]
NOW READS:
FUNCTION PRIOR (i [BINARY_INTEGER | VARCHAR2(size_limit)]) RETURN [BINARY_INTEGER | VARCHAR2(size_limit)];
FUNCTION NEXT (i [BINARY_INTEGER | VARCHAR2(size_limit)]) RETURN [BINARY_INTEGER | VARCHAR2(size_limit)];
|
Anonymous |
Feb 2003 |
| Printed |
Page 307
IN PRINT: Last paragraph, last three lines below table 10-6 |
"The following example illustrates the difference between CURRENT_TIMESTAMP, which
is used to get the time in the server's time zone, and SYSTIMESTAMP, which is used
to get the time in the session's time zone."
NOW READS:
"The following example illustrates the difference between CURRENT_TIMESTAMP, which
is used to get the time in the session's time zone, and SYSTIMESTAMP, which is used
to get the time in the server's time zone."
|
Anonymous |
Oct 2003 |
| Printed |
Page 328
Code in the second bulletted list |
The fourth element in the record structure is actually --
total_sales company_sales_cur.total_sales%TYPE := 0,
but there was a mino typo and it reads --
total_sales company-sales.total_sales%TYPE := 0,
|
Anonymous |
|
| Printed |
Page 342
IN PRINT: 2nd line from the top |
INDEX BY VARCHAR2(size_limit)
SHOULD BE:
INDEX BY PLS_INTEGER
INDEX BY NATURAL
INDEX BY POSITIVE
INDEX BY VARCHAR2(size_limit)
INDEX BY table.column%TYPE
INDEX BY package.variable%TYPE
INDEX BY subtype
where the datatype of any anchored type or subtype resolves to VARCHAR2.
|
Anonymous |
|
| Printed |
Page 357
5th line |
"...i is greater then COUNT..."
should be:
"...i is greater than LAST..."
|
Anonymous |
|
| Printed |
Page 376
1st paragraph (example) |
Under line 19 in the code sample, the folliwng line WAS ADDED:
20 CLOSE desc_cur;
so that it is aligned under the RETURN keyword.
The remaining lines of code HAVE BEEN RENUMBERED and the numbers
appearing in the table below the code UPDATED to reflect these changes.
|
Anonymous |
Sep 2004 |
| Printed |
Page 390
1st paragraph |
capitalization is not the normal standard on this page
e.g. "into", "varchar2", "column_value", "cast"
|
Anonymous |
|
| Printed |
Page 407
In the code listing at the very top of page 407 |
WHERE falls_name='Tannery Falls';
NOW READS:
WHERE falls_name='Dryer Hose';
|
Anonymous |
Oct 2003 |
| Printed |
Page 464
figure 13-4 |
PRAGMA
AUTONOMOUS_TRANSACTION
should be:
PRAGMA
AUTONOMOUS_TRANSACTION;
|
Anonymous |
|
| Printed |
Page 469
Last Line |
DECLARE
PROCEDURE showcount (str VARCHAR2) IS
num integer;
BEGIN
SELECT COUNT(*) INTO num FROM emp2;
NOW READS:
DECLARE
PROCEDURE showcount (str VARCHAR2) IS
num integer;
BEGIN
SELECT COUNT(*) INTO num FROM tasks;'
|
Anonymous |
Feb 2003 |
| Printed |
Page 472
IN PRINT: code example, last three lines |
"BEGIN
OPEN sess; FETCH sess INTO rec; CLOSE sess;"
These two lines of code HAVE BEEN DELETED.
page 491,
SQL%FOUND (in code and text)
NOW READS:
SQL%ROWCOUNT
l_foundsome BOOLEAN;
NOW READS:
l_numfound PLS_INTEGER;
l_foundsome := SQL%FOUND
NOW READS:
l_numfound := SQL%ROWCOUNT
page 503
IN PRINT:
bard_rec bard_cur%ROWTYPE
NOW READS:
bard_rec bookinfo_pkg.bard_cur%ROWTYPE
page 504,
CLOSE bcur;
NOW READS:
CLOSE bard_cur;
|
Anonymous |
Oct 2003 |
| Printed |
Page 472
IN PRINT: first bulleted item on list, HAS BEEN DELETED. |
|
Anonymous |
Sep 2004 |
| Printed |
Page 493
IN PRINT: jealousy_level package |
Line 25...
CLOSE emptyp_cur;
NOW READS:
CLOSE jealousy_cur;
|
Anonymous |
Feb 2003 |
| Printed |
Page 599
IN PRINT: Example at top of page |
"PROCEDURE value_ok (number_in IN NUMBER) RETURN BOOLEAN"
NOW READS:
"PROCEDURE value_ok (number_in IN NUMBER)"
|
Anonymous |
Feb 2003 |
| Printed |
Page 605
"Requirements for calling functions", 4th bullet point |
RESTRICT_REFEFRENCES
NOW READS:
RESTRICT_REFERENCES
|
Anonymous |
Oct 2003 |
| Printed |
Page 659
Last item in first bulleted list |
...functions defined in built-packages...
NOW READS:
...functions defined in built-in packages...
|
Anonymous |
Oct 2003 |
| Printed |
Page 693
6th line of code from the bottom |
"INTEAD OF..."
should be:
"INSTEAD OF..."
|
Anonymous |
|
| Printed |
Page 698
top, code sample |
In this INSTEAD OF DELETE trigger, the reference to
:NEW.delivery_end (in 2 places)
should be:
:OLD.delivery_end.
|
Anonymous |
|
| Printed |
Page 704
IN PRINT: Bottom |
FUNCTION DBMS_REUSABLE.<Name>
and
PROCEDURE DBMS_REUSABLE.<Name>
NOW READ:
FUNCTION DBMS_RESUMABLE.<Name>
and
PROCEDURE DBMS_RESUMABLE.<Name>
|
Anonymous |
Oct 2003 |
| Printed |
Page 709
IN PRINT: Last line |
INVALID_STATE
NOW READS:
INVALID_TRIGGER
|
Anonymous |
Feb 2003 |
| Printed |
Page 710
First sentence of the chapter! |
Writing the code for an application is just one step toward putting that
production into application and then maintaining the code base.
NOW READS:
Writing the code for an application is just one step toward putting that
application into production and then maintaining the code base.
|
Anonymous |
Oct 2003 |
| Printed |
Page 767
Last paragraph |
...relies not so much "depends-on" information as it does on "referenced-by"
information.
NOW READS:
...relies not so much on "depends-on" information as it does on "referenced-by"
information.
|
Anonymous |
Oct 2003 |
| Printed |
Page 799
In the body of the next_book_rec function |
prv_book_cur_status := book_main.book_cur%FOUND;
NOW READS:
prv_book_cur_status := book_maint.book_cur%FOUND;
|
Anonymous |
Oct 2003 |
| Printed |
Page 806
Code sample at bottom, third line of code |
AUTHID CURRENT_USER IS
NOW READS:
IS
|
Anonymous |
Oct 2003 |
| Printed |
Page 852
example for creating catalog_history |
On page 852,the CREATE TABLE code at the top of the page HAS BEEN REVISED to read as follows:
CREATE TABLE catalog_history (
id INTEGER NOT NULL PRIMARY KEY,
action CHAR(1) NOT NULL,
action_time TIMESTAMP DEFAULT (SYSTIMESTAMP) NOT NULL,
old_item catalog_item_t,
new_item catalog_item_t)
NESTED TABLE old_item.subject_refs STORE AS catalog_history_old_subrefs
NESTED TABLE new_item.subject_refs STORE AS catalog_history_new_subrefs;
|
Anonymous |
Oct 2003 |