2013-09-06 3 views
2

Есть ли способ перечисления всех параметров, необходимых для вызова хранимой процедуры (с помощью Oracle DB)?Описание хранимой процедуры. Листинг Аргументы

Например, у меня есть функция, называемая x, которую кто-то еще разработал, и теперь я должен ее назвать, но я не знаю, какие параметры x ожидаются и какие из них являются обязательными или нет.

ответ

1

В зависимости от прав, предоставленных, вы можете запросить all_arguments или user_arguments или начиная с 11g.r1 dba_arguments в список аргументов и другие аргументы, связанные информацию о хранимых процедурах:

Пример:

SQL> create or replace procedure ProcX(
    2 p_par1 in number, 
    3 p_par2 in varchar2 default 'default', 
    4 p_par3 out number 
    5 ) 
    6 is 
    7 begin 
    8 null; 
    9 end; 
10/

Procedure created 

select t.object_name 
    , t.argument_name 
    , t.position 
    , t.data_type 
    , t.defaulted 
    , t.in_out 
    from user_arguments t 
where t.object_name = 'PROCX' 

Object_Name Argument_Name Position Data_Type Defaulted In_Out 
-------------------------------------------------------------- 
PROCX  P_PAR3  3  NUMBER N   OUT 
PROCX  P_PAR2  2  VARCHAR2 Y   IN 
PROCX  P_PAR1  1  NUMBER N   IN 

значение Y в столбце Defaulted указывает, что параметр p_par2 имеет значение по умолчанию, поэтому необязательно.

0

Даже можно найти аргументы подпрограммы из %_ARGUMENTS -tables (как продемонстрировал Николай) во многих случаях, вероятно, недостаточно (в зависимости от контекста/сложности домена). Вместо этого у вас должен быть доступ к подписи подзаголовка либо по документации, либо путем просмотра подпрограммы (документированного) кода в базе данных (такие инструменты графического интерфейса, как SQL Developer, PL/SQL Developer и Toad, отлично подходят для этого) или из системы контроля версий.

Если ваша отправная точка на самом деле:

У меня есть функция под названием х, что кто-то разработал и теперь я должен назвать это, но я не знаю, какие параметры х ожидает и какие из них обязательным или нет.

И нет никакой документации, и у вас нет доступа к исходному коду, то я сомневаюсь, что информация, как:

Object_Name Argument_Name Position Data_Type Defaulted In_Out 
-------------------------------------------------------------- 
PROCX  P_PAR3  3  NUMBER N   OUT 
PROCX  P_PAR2  2  VARCHAR2 Y   IN 
PROCX  P_PAR1  1  NUMBER N   IN 

не поможет вам много (даже если аргументы имеют более описательные имена), если функция «тривиальна».

Для вас надеюсь, что это одноразовая проблема - во всех других сценариях ваш проект, скорее всего, потерпит неудачу.

0

Вопрос помечен plsqldeveloper.

Одной из замечательных особенностей такого замечательного продукта является щелчок правой кнопкой мыши по методу после нахождения его в браузере объектов. Существуют варианты для всех способов мгновенного опроса без написания каких-либо запросов.

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