0

このクエリを実行すると:

SELECT DISTINCT U.REFERENCED_NAME, U.REFERENCED_TYPE
FROM USER_DEPENDENCIES U
where U.name IN('P_CREATE_T')

それは私に与えるでしょう:

  U.REFERENCED_NAME |  U.REFERENCED_TYPE
  random_name_table | table

このテーブルを削除すると random_name_table :

テーブルを削除する random_name_table

そして、依存クエリを実行すると、次のようになります。

        U.REFERENCED_NAME        |  U.REFERENCED_TYPE
  BIN$6WfJh8MWWGngQ3ATqMDOpQ==$0 | table

結果がごみ箱に関連していることは知っていますが、テーブルがドロップされた場合でもテーブルを表示する方法はありますか? つまり、依存クエリはデータベースからではなく、プロシージャから読み取るべきではないということですか? そうでない場合、データベースからではなくプロシージャから読み取るクエリはありますか?


編集
OK 明確にします:
私の質問 USER_DEPENDENCIES はプロシージャまたはデータベースから読み取られますか? 2 つ目の質問ですが、ごみ箱には常に表示されますか? つまり、リサイクルの結果が消えることはありますか?

4

3 に答える 3

1

質問を理解しているかどうかわかりません。

ごみ箱にあるオブジェクトの元の名前を見つけたい場合は、次のことができます。

SELECT original_name
  FROM user_recyclebin
 WHERE object_name = 'BIN$6WfJh8MWWGngQ3ATqMDOpQ==$0'

RANDOM_TABLE_NAMEそれはあなたが落とし たものをあなたに与えるはずです。

ただし、これがあなたの質問かどうかはわかりません。「データベースからではなく、プロシージャから読み取る」とはどういう意味かわかりません。

于 2013-10-31T15:46:41.283 に答える
1

質問の意味を明確にするための別の試み:「手順」はコードです。コードは実行アルゴリズムを記述する方法であり、実行開始時に初期化されるコードといくつかの定数以外には何も格納されませんでした。
したがって、プロシージャ コードが「読み取った」もの (存在する場合) は、「データベース」(ディスク ストレージとキャッシュ) からのものであり、他の場所からのものではありません。

とは何かについて質問する場合user_dependenciesは、「ビューです」と答えてください。

create or replace view sys.user_dependencies
(name, type, referenced_owner, referenced_name, referenced_type, referenced_link_name, schemaid, dependency_type)
as
select o.name,

-- ... skipped code ...

from 
  sys."_CURRENT_EDITION_OBJ"   o, 
  sys.disk_and_fixed_objects   po,
  sys.dependency$ d, sys.user$ pu

where 
-- ... another skipped code ...

sys._current_edition_obj別のビューです:

create or replace view sys._current_edition_obj as
select 
  -- ... skipped ...
from obj$ o, user$ u
where 
  -- .. skipped ...

sys.obj$ および sys.user$ は内部 Oracle テーブルです。

于 2013-10-31T18:55:37.650 に答える