Question

Comment d'ASP.NET je peux appeler une procédure stockée dans un package Oracle qui accepte un varray. Le varray passera une liste de clés que la procédure stockée utilisera pour modifier les enregistrements appropriés. Je sais que je pourrais envoyer les clés dans des appels séparés ou envoyer une liste délimitée, mais je préfère utiliser un tableau.

Était-ce utile?

La solution

En supposant que vous utilisez ODP.NET (vous ne devriez pas utiliser System.Data.OracleClient de toute façon), voici comment faire:

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();
        }
    }
}

Autres conseils

Avez-vous essayé cette

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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top