1

我有这种类型:

TYPE tipo_TableVarchar2 IS TABLE OF VARCHAR2(1000) INDEX BY BINARY_INTEGER;

程序get_array (p_arr out TableVarchar2 )是...

OracleParameter param = new OracleParameter();
param.OracleDbType = OracleDbType.Varchar2;
param.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
param.ParameterDirection = ParameterDirection.Output;

cm.Parameters.Add(param);

如何使用OracleParameter' 的输出来获取值?

4

1 回答 1

1

查看 Oracle 11g odp.net 驱动程序,它允许您传递 Oracle 类型。Oracle 的站点上有一些示例,以及在您的 11g 主目录的安装目录中... C:\Oracle\Ora11g_Home\odp.net\samples\2.x\UDT

我不得不在这个示例中撤回一个对象类型。

你会有这样的...

        OracleParameter p_params = new OracleParameter();
        p_params.ParameterName = "params";
        p_params.OracleDbType = OracleDbType.Object;
        p_params.Direction = ParameterDirection.InputOutput;
        // Note: The UdtTypeName is case-senstive
        p_params.UdtTypeName = "SCHEMA_NAME.TYPE_NAME";

您还需要一个定义您的类型的类。搜索“OracleObjectMappingAttribute”和“IOracleCustomTypeFactory”。

旁注 - 我正在使用 11g odp.net 驱动程序来访问 10g 数据库。您只需在项目中引用以下.dll:oci.dll、oraociicus11.dll 和 OraOps11w.dll。您应该已经在引用 Oracle.DataAccess.dll(只要确保您开始使用 11g 版本)。

于 2009-11-17T15:53:16.567 回答