2012-02-14 18 views
4

PL/SQLプロシージャのパラメータ定義を取得する必要があります。PL/SQLプロシージャ・スキーマの取得

MS SQLでは、Information_schema.Parametersを使用します。オラクルの対応するものがあれば、それは何ですか?

答えて

7

データ・ディクショナリ表ALL_ARGUMENTSから、同じデータのほとんど(すべてではないにしても)にOracleにアクセスできます。 ALL_ARGUMENTSには、実行権限があるすべてのプロシージャの引数が表示されます。 USER_ARGUMENTSはあなたが所有するすべての手続きの引数を表示します。 DBA_ARGUMENTSは、データベースに存在するすべてのプロシージャの引数を表示しますが、DBA_*ビューにアクセスするには追加の権限が必要です。

0

ストアドプロシージャのパラメータに関する情報のほとんどはALL_ARGUMENTSで見つけることができると同様にUSER_ARGUMENTSDBA_ARGUMENTS

。ここ..

の出力を与える USER_ARGUMENTS

CREATE OR REPLACE PROCEDURE my_proc 
(p_number IN NUMBER, 
p_varchar IN OUT VARCHAR2 , 
p_clob IN OUT NOCOPY CLOB, 
p_timestamp OUT TIMESTAMP 
) 
IS 
BEGIN 
    NULL; 
END; 
/

CREATE OR REPLACE FUNCTION my_func 
(p_date IN DATE, 
p_varchar IN VARCHAR2) 
RETURN BOOLEAN 
IS 
BEGIN 
return TRUE; 
END; 
/

SELECT package_name,object_name, argument_name, IN_OUT , pls_type ,position 
FROM user_arguments 
WHERE object_name IN ('MY_PROC','MY_FUNC') 
ORDER BY package_name, object_name, position; 

を使用して迅速なサンプルがあります

Procedure created. 

Function created. 

PACKAGE_NAME   OBJECT_NAME     ARGUMENT_NAME    IN_OUT PLS_TYPE    POSITION 
--------------------- ------------------------------ ------------------------- --------- -------------------- ---------- 
         MY_FUNC             OUT  BOOLEAN      0 
         MY_FUNC      P_DATE     IN  DATE       1 
         MY_FUNC      P_VARCHAR     IN  VARCHAR2      2 
         MY_PROC      P_NUMBER     IN  NUMBER      1 
         MY_PROC      P_VARCHAR     IN/OUT VARCHAR2      2 
         MY_PROC      P_CLOB     IN/OUT CLOB       3 
         MY_PROC      P_TIMESTAMP    OUT  TIMESTAMP     4 

7 rows selected. 

ご覧のとおり、最も有益な情報がありますが、表示されませんNOCOPYヒント。 nullのARGUMENT_NAMEは、関数の戻り値です

ALL_およびDBA_バージョンにはOWNER列が追加されます。

ストアドプロシージャ自体に関する追加情報は、探している詳細のレベルによってはALL_PROCEDURES,ALL_PLSQL_OBJECT_SETTINGSおよびALL_OBJECTSにあります。

関連する問題