Get Foundation Error from ORA Error
- Rumesh Aponso (RMAX)
- Dec 10, 2024
- 1 min read
FUNCTION Strip_Ora_Error (
sqlerrm_ IN VARCHAR2,
sqlcode_ IN NUMBER DEFAULT NULL,
strip_ora_only_ IN BOOLEAN DEFAULT FALSE,
keep_non_fnd_ IN BOOLEAN DEFAULT TRUE ) RETURN VARCHAR2
IS
lsqlcode_ NUMBER;
BEGIN
IF (sqlcode_ IS NULL AND sqlerrm_ LIKE 'ORA-%') THEN
lsqlcode_ := to_number(SUBSTR(sqlerrm_, 4, INSTR(sqlerrm_, ':') - 4));
ELSE
lsqlcode_ := sqlcode_;
END IF;
IF (lsqlcode_ IS NOT NULL) THEN
IF (Is_Foundation_Error(lsqlcode_)) THEN
IF (strip_ora_only_) THEN
-- Remove 'ORA-xyz: ' but keep 'LuName.ERROR_NAME: '
RETURN trim(SUBSTR(sqlerrm_, INSTR(sqlerrm_, ':') + 2));
ELSE
-- Remove 'ORA-xyz: ' and 'LuName.ERROR_NAME: '
RETURN trim(SUBSTR(sqlerrm_, INSTR(sqlerrm_, ':', 1, 2) + 2));
END IF;
ELSE
IF (keep_non_fnd_) THEN
-- Keep 'ORA-xyz: '
RETURN trim(sqlerrm_);
ELSE
-- Remove 'ORA-xyz: '
RETURN trim(SUBSTR(sqlerrm_, INSTR(sqlerrm_, ':') + 2));
END IF;
END IF;
ELSE
RETURN trim(sqlerrm_);
END IF;
END Strip_Ora_Error;
Comments