使用Oracle的.NET客户端按过程名称读取Oracle存储过程接口

时间:2013-09-03 07:17:16

标签: .net oracle stored-procedures schema ddl

如何使用Oracle.ManagedDataAccess.Client(或Oracle.DataAccess.Client)读取给定包中的存储过程接口(签名),以便我可以推断出所需的参数,类型/长度以及它们是否是INOUT或两者兼而有之?

示例:鉴于我正在寻找somePackage.someProc,请以最易于使用的格式向我提供该proc的定义(而不是正文)。

1 个答案:

答案 0 :(得分: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