CREATE TABLE R1(TEST NUMBER);

DECLARE
 i INTEGER := 3;
BEGIN
  INSERT INTO R1 (test) VALUES (10/i);
  SAVEPOINT A;
  i := i-1;
  INSERT INTO R1 (test) VALUES (10/i);
  i := i-1;
  INSERT INTO R1 (test) VALUES (10/i);
  i := i-1;
  INSERT INTO R1 (test) VALUES (10/i);
  i := i-1;
  INSERT INTO R1 (test) VALUES (10/i);
  COMMIT;
EXCEPTION
  WHEN ZERO_DIVIDE THEN
    ROLLBACK TO SAVEPOINT A;
    COMMIT;
END;
/
