Прежде всего - нет, это неправильный способ сделать это. Тот факт, что Dynami c SQL существует, не означает, что вы должны использовать его, особенно не для создания пакетов (или любых других объектов). Есть действительно редкие ситуации, в которых вы бы хотели это сделать.
PL / SQL процедуры (функции, пакеты, триггеры) предлагают опцию create OR REPLACE , так что запускать безопасно. это утверждение как (не как Dynami c SQL). Это означает, что:
- , если он не существует, он будет создан
- , если он существует, он будет перезаписан кодом, который вы ' мы только что запустили
Если вы настаиваете на Dynami c SQL, проверьте его наличие (пакет), запросив user_objects
:
SQL> select count(*)
2 from user_objects
3 where object_name = 'JUSTICE_LEAGUE'
4 and object_type = 'PACKAGE';
COUNT(*)
----------
0
SQL>
В зависимости от результата, выполните execute immediate
(или нет).