سؤال

وكيف من ASP.NET يمكنني استدعاء إجراء مخزن في حزمة أوراكل يقبل 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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top