2016-11-07 3 views

答えて

1

これはSQL Developerではありません。あなたは、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など)。パーサーは、所有者がデータベースに実際に存在するオブジェクトの一部としてそこに属していないため、所有者を削除しています。純粋な外部ソースコードとして(またはそれを行うこともあります)、ソース管理で使用しているバージョンはそれが適切であればそれを保持できます。そのスキーマで定義されているオブジェクトの一部としては何も意味しません。

オブジェクトビューアから別のスキーマにオブジェクトを作成しようとすると、モジュールの名前が変更され、オブジェクトビューアを再度開こうとしていることがわかります。

しかし、所有者名は、完全に削除されるのではなく、スペース(スキーマ名が引用符で囲まれている場合は二重引用符で囲まれた2つの文字列)で置き換えられます。また、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開発者オブジェクトビューのためにどのような方法があるように思えません。

+0

でも、私は結果に失望しています。私は答えに非常に感謝しています。 –

+0

@MladenOršolić - あなたはいつでも[SQL Developer forum](https://community.oracle.com/community/database/developer-tools/sql_developer)でそれを上げて、将来の拡張が可能かどうか確認できます。 –

+0

私は実際にはTOADの振る舞いと比較したように、TOADでは期待通りに動作します。スキーマ名を記述すると、再コンパイル/再オープン後にそこにとどまります。 –

関連する問題