Чтение интерфейса хранимой процедуры Oracle по имени процедуры с использованием клиента Oracle .NET.

Как я могу прочитать интерфейс хранимой процедуры (подпись) в данном пакете, используя Oracle.ManagedDataAccess.Client (или Oracle.DataAccess.Client), чтобы я мог сделать вывод о необходимых параметрах, их типах/длинах, а также о том, являются ли они IN, OUT или обоими?

Пример: учитывая, что я ищу somePackage.someProc, верните мне определение (не тело) для этого процесса в наиболее удобном для использования формате.


person tacos_tacos_tacos    schedule 03.09.2013    source источник


Ответы (1)


Вся необходимая информация о параметрах процедуры/функции находится в представлении метаданных ALL_ARGUMENTS.

Например:

SQL> CREATE PACKAGE somePackage AS
  2     PROCEDURE someProc (p_arg1 NUMBER, p_arg2 OUT VARCHAR2);
  3  END;
  4  /

Package created

SQL> SELECT package_name, object_name, position, argument_name, data_type, in_out
  2    FROM user_arguments
  3   WHERE package_name='SOMEPACKAGE';

PACKAGE_NAME  OBJECT_NAME   POSITION ARGUMENT_NAME  DATA_TYPE  IN_OUT
------------- ------------ --------- -------------- ---------- ---------
SOMEPACKAGE   SOMEPROC             1 P_ARG1         NUMBER     IN
SOMEPACKAGE   SOMEPROC             2 P_ARG2         VARCHAR2   OUT
person Vincent Malgrat    schedule 03.09.2013