C # вызов Oracle 11g Процедура с параметром VARRAY - PullRequest
2 голосов
/ 14 января 2010

Как из ASP.NET я могу вызвать хранимую процедуру в пакете Oracle, который принимает VArray. VArray передаст список ключей, которые хранимая процедура будет использовать для изменения соответствующих записей. Я знаю, что могу отправлять ключи отдельными вызовами или отправлять список с разделителями, но я бы лучше использовал массив.

Ответы [ 2 ]

2 голосов
/ 14 января 2010

Если вы используете 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();
        }
    }
}
0 голосов
/ 14 января 2010

Вы пробовали это

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