Create and populate a table
CREATE TABLE plch_parts
(
partnum NUMBER (3) PRIMARY KEY
, partname VARCHAR2 (100) UNIQUE
)
Table created.
BEGIN
INSERT INTO plch_parts
VALUES (999, 'Mouse');
INSERT INTO plch_parts
VALUES (998, 'Keyboard');
INSERT INTO plch_parts
VALUES (997, 'Monitor');
COMMIT;
END;
1 row(s) inserted.
Create error logging table for parts table
BEGIN
DBMS_ERRLOG.create_error_log (dml_table_name => 'PLCH_PARTS');
END;
Statement processed.
DECLARE
l_count PLS_INTEGER;
BEGIN
SELECT COUNT (*) INTO l_count FROM err$_plch_parts;
DBMS_OUTPUT.put_line ('Before = ' || l_count);
UPDATE plch_parts
SET partnum = partnum * 10
LOG ERRORS REJECT LIMIT UNLIMITED;
SELECT COUNT (*) INTO l_count FROM err$_plch_parts;
DBMS_OUTPUT.put_line ('After = ' || l_count);
END;
Before = 0
After = 3
Impact of REJECT LIMIT clause (not UNLIMITED)
DECLARE
l_count PLS_INTEGER;
BEGIN
SELECT COUNT (*) INTO l_count FROM err$_plch_parts;
DBMS_OUTPUT.put_line ('Before = ' || l_count);
UPDATE plch_parts
SET partnum = partnum * 10
LOG ERRORS REJECT LIMIT 2;
SELECT COUNT (*) INTO l_count FROM err$_plch_parts;
DBMS_OUTPUT.put_line ('After = ' || l_count);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Error = ' || DBMS_UTILITY.FORMAT_ERROR_STACK);
SELECT COUNT (*) INTO l_count FROM err$_plch_parts;
DBMS_OUTPUT.put_line ('After Error = ' || l_count);
END;
Before = 3
Error = ORA-01438: value larger than specified precision allowed for this column
After Error = 6