C # appel à Oracle 11g procédure avec le paramètre VARRAY
-
20-09-2019 - |
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.
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
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