Can an Oracle stored procedure that has a nested table parameter be called from ODP.NET?

。_饼干妹妹 提交于 2019-11-29 11:57:01

I made it work this way:

  • Create a type in the database like "create or replace TYPE NT_LNG IS TABLE OF varchar(2);"
  • Create a Class implementing IOracleCustomType and INullable (SimpleStringArray)
  • Create a Class implementing IOracleCustomTypeFactory (SimpleStringArrayFactory). Mark it with this attribute "[OracleCustomTypeMappingAttribute("KNL.NT_LNG")]"

and you pass the parameter like this:

 SimpleStringArray sa1 = new SimpleStringArray();
 sa1.Array = new String[]{"aaa","bbb"};
 OracleParameter param = new OracleParameter("p_lngsrc", OracleDbType.Array, sa1, ParameterDirection.Input);
 param.UdtTypeName = "KNL.NT_LNG";

Good Luck

Oracle also offers a free tool to generate a custom .NET class that maps to your nested table type:

Download "Oracle Developer Tools for Visual Studio" (free), open Server Explorer, open "User Defined Types" node, find your user defined type, right click and choose "Generate Custom Class".

Here's a walkthrough to get you started with UDTs in general:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/hol08/dotnet/udt/udt_otn.htm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!