代码之家  ›  专栏  ›  技术社区  ›  Leigh Riffel

使用varray参数调用Oracle 11g过程

  •  2
  • Leigh Riffel  · 技术社区  · 15 年前

    如何从ASP.NET调用接受varray的Oracle包中的存储过程。varray将传递存储过程用于修改适当记录的键列表。我知道我可以在单独的调用中发送键,或者发送一个分隔列表,但我宁愿使用数组。

    2 回复  |  直到 13 年前
        1
  •  2
  •   Vadim K.    15 年前

    假设你在使用odp.net(你不应该使用 System.Data.OracleClient 不管怎样),以下是操作方法:

    using System;
    using System.Data;
    using Oracle.DataAccess.Client;
    
    class SomeClass
    {
        void SomeMethod(string connectionString, int[] anArrayOfKeys)
        {
            using (var con = new OracleConnection(connectionString))
            using (var cmd = con.CreateCommand())
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "StoredProcedureNameGoesHere";
                cmd.Parameters.Add(
                    "ParameterNameGoesHere",
                    OracleDbType.Array,
                    anArrayOfKeys,
                    ParameterDirection.Input);
    
                con.Open();
                cmd.ExecuteNonQuery();
            }
        }
    }
    
        2
  •  -1
  •   Craig    15 年前

    Did you try this

    OracleCommand cmd = OracleConnection1.CreateCommand();
    cmd.CommandText = "INSERT INTO ArrayTable VALUES (:CODE, :TITLE, : ARR1, :ARR2)";
    ...
    OracleArray arr1 = new OracleArray("SCOTT.TARRAY1", OracleConnection1);
    arr1.Add(10);
    arr1.Add(20);
    arr1.Add(30);
    ...
    cmd.Parameters["ARR1"].DbType = OracleDbType.Array;
    cmd.Parameters["ARR1"].Value = arr1;
    ...
    cmd.ExecuteNonQuery();