C # الدعوة إلى إجراء أوراكل 11g مع المعلمة VARRAY
-
20-09-2019 - |
سؤال
وكيف من 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();
لا تنتمي إلى StackOverflow