我有这种类型:
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
的输出来获取值?
答案 0 :(得分:1)
查看Oracle 11g odp.net驱动程序,它允许您传递Oracle类型。 Oracle网站上以及11g家庭的安装目录中有一些示例...... C:\甲骨文\ Ora11g_Home \ odp.net \样品\ 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数据库。您只需要在项目中引用以下数据:oci.dll,oraociicus11.dll和OraOps11w.dll。你应该已经引用了Oracle.DataAccess.dll(只要确保你开始点击11g版本)。