4

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

MS SQLでは、Information_schema.Parameters;を使用します。Oracleの対応するもの(ある場合)は何ですか?

4

2 に答える 2

7

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

于 2012-02-14T21:41:26.983 に答える
1

ストアドプロシージャのパラメータに関する情報のほとんどは、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_PROCEDURESALL_PLSQL_OBJECT_SETTINGS、およびALL_OBJECTSにあります。

于 2012-02-14T23:30:50.790 に答える