У меня есть SQL-скрипт, выполняемый SQL * Plus, который должен работать с Oracle 10g и Oracle 11g .
Этот скрипт предоставляет гранты на пакет, который не существует до 11g:
GRANT EXECUTE ON sys.dbms_result_cache TO my_user;
Я бы хотел избежать исключения для 10g, поскольку я хочу реагировать на другие исключения в сценарии.
Один из способов - использовать Условная компиляция и dbms_db_version
:
BEGIN
$IF dbms_db_version.ver_le_10 $THEN NULL; $ELSE
EXECUTE IMMEDIATE 'GRANT EXECUTE ON sys.dbms_result_cache TO my_user';
$END
END;
/
Есть ли другой способ, предпочтительный без использования PL / SQL?