Вызов C# процедуры Oracle 11g с параметром VARRAY
-
20-09-2019 - |
Вопрос
Как из ASP.NET я могу вызвать хранимую процедуру в пакете Oracle, которая принимает VArray.VArray передаст список ключей, которые хранимая процедура будет использовать для изменения соответствующих записей.Я знаю, что могу отправлять ключи отдельными вызовами или отправлять список с разделителями, но я бы предпочел использовать массив.
Решение
Предполагая, что вы используете 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();
}
}
}
Другие советы
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();
Не связан с StackOverflow