私はパッケージを持っています:
CREATE PACKAGE my_pkg
IS
g_var NUMBER;
END;
/
このパッケージにこのグローバル変数があることを確認するために、SYSビューを照会する方法はありますか?明示的な変数名とデータ型に興味があります。
PS解析user_sourceはカウントされません。
編集:ゲッター/セッター関数を導入せずにそれを実行したいと思います。
私はパッケージを持っています:
CREATE PACKAGE my_pkg
IS
g_var NUMBER;
END;
/
このパッケージにこのグローバル変数があることを確認するために、SYSビューを照会する方法はありますか?明示的な変数名とデータ型に興味があります。
PS解析user_sourceはカウントされません。
編集:ゲッター/セッター関数を導入せずにそれを実行したいと思います。
この情報を含むsysビューはありません。ここでできる最善の方法は、user_sourceまたはall_sourceを使用することです(これは重要ではないとおっしゃっていましたが、ここでできる最善の方法だと思います)。
そうは言っても、グローバルに標準のg_プレフィックスを使用する場合、all_sourceの解析は本当に悪いですか?ソースをループして「g_」を検索するPL/SQLを作成できると思います。おそらく多少の調整と実験が必要ですが、試してみる価値はあると思います。
パッケージ内の関数を使用して公開できます。
FUNCTION FN_get_g_var RETURN number
IS BEGIN
return g_var; END
FN_get_g_var ;
そして、ビューで
CREATE VIEW myView AS
SELECT my_pkg.FN_get_g_var() FROM DUAL;
私自身の参考のために、これはデータディクショナリからその情報を取得するクエリです-
select name as variable_name, object_name as package_name, object_type
from dba_identifiers a
where usage_context_id = 1
and usage = 'DECLARATION'
and type = 'VARIABLE'
start with object_type in ('PACKAGE', 'PACKAGE BODY')
connect by prior usage_id = usage_context_id
and object_name = prior object_name
and object_type = prior object_type