当前位置: 首页 > 编程语言 > C#

使用ODP.Net托管客户端将对象数组传递给oracle存储过程分享

时间:2023-04-11 03:01:44 C#

C#学习教程:使用ODP.Net托管客户端将对象数组传递给Oracle存储过程publicclassEmployee{publicstringName{get;放;}publicstringCity{get;放;我的webAPI在每个请求中收到一个包含50条员工记录的列表,需要在Oracle数据库详细信息中更新这些记录。我遵循将整数数组传递给Oracle存储过程的相同方法,并尝试了以下操作。以下类型和存储过程是在Oracle中创建的。–基本类型创建或替换类型EMPTESTASOBJECT(Namevarchar2(50),Cityvarchar2(50));–包创建或替换PACKAGEpkgUDFArray_TestAS类型“T_EMPUDF_ARRAY”是EMPTEST表;程序ProcEmpUDFArray_Test(Param1;FND_T_RAY)pkgUDFArray_Test;–包体创建或替换包体pkgUDFArray_TestASPROCEDUREProcEmpUDFArray_Test(Param1INT_EMPUDF_ARRAY)ASBEGINFORALLindxIN1..Param1.COUNTINSERTINTOEmployee(Name,City.Param1)VALUES(Param1.COUNTINSERTINTOEmployee(Name,City).Param1)VALUES().City);结束ProcEmpUDFArray_Test;结束pkgUDFArray_Test;下面是来自WebAPI的代码。列表EmpList=newList(){newEmployee(){City="City1",Name="Emp1"},newEmployee(){City="City2",Name="Emp2"}};OracleConnectioncon=newOracleConnection(connectionString);con.Open();varcmd=con.CreateCommand();cmd.CommandText="pkgUDFArray_Test.ProcEmpUDFArray_Test";cmd.CommandType=CommandType.StoredProcedure;OracleParameterparam1=newOracleParameter();param1.Direction=ParameterDirection.Input;param1.CollectionType=OracleCollectionType.PLSQLAssociativeArray;param1.Value=EmpList.ToArray();param1.Size=2;param1.DbType=DbType.Object;.处置();}catch(Exceptionex){抛出ex;当我尝试这个时,我收到错误“该值不在预期范围内。”在下一行。param1.Value=EmpList.ToArray();我知道我需要在这里做更多的工作才能让它发挥作用。我搜索过类似的主题,但找不到任何关于托管客户的信息。我知道有一种方法可以使用旧的Oracle.DataAccess.dll,但想知道是否有一种方法可以使用最新的托管客户端。以上就是C#学习教程:使用ODP.Net托管客户端将对象数组传递给oracle存储过程。如果对大家有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请右击联系管理员删除。如需转载请注明出处: