4

私はパッケージを持っています:

CREATE PACKAGE my_pkg
IS
g_var NUMBER;
END;
/

このパッケージにこのグローバル変数があることを確認するために、SYSビューを照会する方法はありますか?明示的な変数名とデータ型に興味があります。

PS解析user_sourceはカウントされません。

編集:ゲッター/セッター関数を導入せずにそれを実行したいと思います。

4

3 に答える 3

3

この情報を含むsysビューはありません。ここでできる最善の方法は、user_sourceまたはall_sourceを使用することです(これは重要ではないとおっしゃっていましたが、ここでできる最善の方法だと思います)。

そうは言っても、グローバルに標準のg_プレフィックスを使用する場合、all_sourceの解析は本当に悪いですか?ソースをループして「g_」を検索するPL/SQLを作成できると思います。おそらく多少の調整と実験が必要ですが、試してみる価値はあると思います。

于 2009-12-16T14:46:58.023 に答える
2

パッケージ内の関数を使用して公開できます。

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;
于 2009-12-16T14:46:15.313 に答える
2

私自身の参考のために、これはデータディクショナリからその情報を取得するクエリです-

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
于 2017-03-27T08:38:10.473 に答える