我正在開發與Oracle數據庫交互的.NET前端。我已經想出瞭如何獲得要執行的存儲過程的列表,但我不知道如何獲取屬於存儲過程的參數列表。我希望能夠顯示存儲過程的輸入參數和輸出參數的所有參數的列表。Oracle存儲過程列表參數
我試過使用DBA_SOURCE,DBA_PROCEDURES,ALL_DEPENDENCIES,但我還沒有看到任何顯示屬於指定存儲過程的參數。
任何想法?
我正在開發與Oracle數據庫交互的.NET前端。我已經想出瞭如何獲得要執行的存儲過程的列表,但我不知道如何獲取屬於存儲過程的參數列表。我希望能夠顯示存儲過程的輸入參數和輸出參數的所有參數的列表。Oracle存儲過程列表參數
我試過使用DBA_SOURCE,DBA_PROCEDURES,ALL_DEPENDENCIES,但我還沒有看到任何顯示屬於指定存儲過程的參數。
任何想法?
我相信,我收到兩種反應是正確的,但我最終找到一個不同的查詢,給了我正是我要找for:
SELECT
ARGUMENT_NAME
, PLS_TYPE
, DEFAULT_VALUE
FROM
USER_ARGUMENTS
WHERE
OBJECT_NAME = '<my_stored_proc>'
這一直在爲我工作,並拉取了我想要的所有OracleParameter信息。
您可以在DBA/ALL/USER_ARGUMENTS
視圖中查找參數元數據。
這是我們使用,查詢或多或少:
SELECT *
FROM
ALL_ARGUMENTS
WHERE
DATA_TYPE IS NOT NULL
-- This check removes package procedure arguments that don't really
-- seem to mean anything
AND
DATA_LEVEL = 0
-- Use this predicate to remove entries for the return value of functions
AND
POSITION > 0
ORDER BY
OWNER,
PACKAGE_NAME,
OBJECT_NAME,
OBJECT_ID,
OVERLOAD,
POSITION
正如其他人所說的 - 您可以在_ARGUMENTS視圖中找到大部分元數據,但要注意的是,如果參數是pl/sql記錄類型或者可能需要哪種結構將sys_refcursor變量傳遞給存儲過程。 –