2012-02-14 3 views

ответ

7

Большинство (если не все) тех же данных могут быть доступны в Oracle из таблицы словаря данных ALL_ARGUMENTS. ALL_ARGUMENTS показывает аргументы для всех процедур, которые у вас есть для разрешения. USER_ARGUMENTS показывает аргументы для всех ваших процедур. И DBA_ARGUMENTS показывает аргументы для всех процедур, существующих в базе данных, но вам нужны дополнительные привилегии для доступа к представлениям DBA_*.

0

Большая часть информации о хранимых параметров процедуры можно найти в ALL_ARGUMENTS и аналогично в USER_ARGUMENTS и DBA_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. ARGUMENT_NAME, которое является нулевым, является «возвращаемым значением» функции

В версии ALL_ и DBA_ будет добавлен дополнительный столбец OWNER.

дополнительную информацию о самой хранимой процедуре можно найти в ALL_PROCEDURES, ALL_PLSQL_OBJECT_SETTINGS и ALL_OBJECTS в зависимости от того, какой уровень детализации вы ищете.

Смежные вопросы