2010-01-14 7 views
2

Comment depuis ASP.NET je peux appeler une procédure stockée dans un package Oracle qui accepte un VArray. Le VArray transmettra 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.Appel C# vers Oracle 11g Procédure avec le paramètre VARRAY

Répondre

2

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

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(); 
+0

Non, je l'ai pas essayé , et ne répondrait pas à mes exigences car il s'insère directement dans la table plutôt que d'appeler la procédure stockée (ce qui peut faire plus qu'un simple insert). Il semble que vous référeniez un type de tableau Oracle (SCOTT.TARRAY1), ce qui me permet d'y arriver en partie. –

+0

Je n'ai pas remarqué le lien initialement. Cette solution nécessite également l'achat de dotConnect de devart. –

Questions connexes