Это не разработчик SQL. При создании пакета с помощью SQL * Plus, а затем запрос dba_source
(или вариантов все/пользователей) вы увидите имя было удалено, вместе с create or replace
текстом:
SQL> create or replace package my_schema.package_name as
2 end;
3/
Package created.
SQL> select text from sys.dba_source
2 where type = 'PACKAGE' and owner = 'MY_SCHEMA' and name = 'PACKAGE_NAME'
3 order by line;
TEXT
--------------------------------------------------------------------------------
package package_name as
end;
2 rows selected.
Владелец не является частью источника пакета, он хранится отдельно в словаре данных (dba_objects.owner
и т. д.). Парсер удаляет владельца, потому что он не принадлежит ему, как часть объекта, который фактически существует в базе данных. Как чистый, внешний исходный код, который он делает (или может делать в любом случае), и версия, которую вы имеете в исходном управлении, может сохранить это, если это уместно; но как часть объекта, определенного в этой схеме, это ничего не значит.
Вы также можете заметить, что если вы попытаетесь создать объект в другой схеме из средства просмотра объектов, он сообщит вам, что модуль был переименован и пытается повторно открыть средство просмотра объектов.
Интересно, однако, что имя владельца заменяется пробелами (в том числе два для двойных кавычек, если имя схемы цитируется), а не просто полностью удаляется. А также интересно, что просмотрщик объектов SQL Developer всегда ставит create or replace
, но также замечает, что он всегда включает в себя or replace
, даже если у вас изначально не было этого в вашем коде. Если бы этого не произошло, вы, конечно, не смогли бы перекомпилировать его.
Пакет dbms_metadata.get_ddl
по умолчанию добавляет имя схемы и цитирует идентификаторы; но и теряет лишние пробелы в процессе:
SQL> select dbms_metadata.get_ddl('PACKAGE', 'PACKAGE_NAME', 'MY_SCHEMA') from dual;
DBMS_METADATA.GET_DDL('PACKAGE','PACKAGE_NAME','MY_SCHEMA')
--------------------------------------------------------------------------------
CREATE OR REPLACE PACKAGE "MY_SCHEMA"."PACKAGE_NAME" as
end;
1 row selected.
не кажется Там быть каким-либо образом для просмотра объекта SQL Developer, чтобы показать, или повторно добавить имя схемы, хотя.
Даже если я разочарован результатом, я очень благодарен за ответ. –
@ MladenOršolić - вы всегда можете поднять его на форуме разработчиков SQL (https://community.oracle.com/community/database/developer-tools/sql_developer) и посмотреть, может ли это быть будущим улучшением. –
Я действительно мог бы, так как мы только что сравнили его с поведением TOAD, а в TOAD он работает так, как ожидалось. Если вы пишете имя схемы, оно остается там после повторной компиляции/повторного открытия. –