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

后端 未结 2 1651
北恋
北恋 2020-12-20 03:14

I\'ve got a stored procedure that has a couple parameters that are nested tables.

CREATE TYPE FOO_ARRAY AS TABLE OF NUMBER;
CREATE TYPE BAR_ARRAY AS TABLE OF         


        
相关标签:
2条回答
  • 2020-12-20 03:37

    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

    0 讨论(0)
  • 2020-12-20 03:51

    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

    0 讨论(0)
提交回复
热议问题