У меня есть 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?