DECLARE null_tmpString EXCEPTION; tmpString VARCHAR2(20); BEGIN --someProcedure sets tmpString as an OUT parameter someProcedure( 'asdf', 1, tmpString ); INSERT INTO someTable ( column1, column2 ) VALUES ( tmpString, 'qwer' ); IF tmpString IS NULL THEN --raise an error to go to the exceptions section --in this case, we skip the update but still --commit the insert RAISE null_tmpString; END IF; UPDATE someOtherTable SET otherColumn1 = 5 WHERE otherColumn2 = tmpString; COMMIT; EXCEPTION WHEN null_tmpString THEN COMMIT; WHEN OTHERS THEN ROLLBACK; END;