मैं एक प्रक्रिया है कि एक पैरामीटर के रूप में table of numbers
के एक कस्टम डेटा प्रकार लेता है फोन करने के लिए प्रयास कर रहा हूँ में ओरेकल UDT के लिए बाध्य है।अमान्य प्रक्रिया पैरामीटर
create type num_list as table of number;
और प्रक्रिया की परिभाषा:
यहाँ प्रकार की परिभाषा है
create or replace procedure my_procedure
(listofnumbers num_list,
v_value char)
is
begin
update my_table
set my_column = v_value
where my_row_id in (select column_value
from table(listofnumbers));
end;
ODP.NET और सी # का उपयोग करना, मैं इसे घोषित कर रहा हूँ इस प्रकार है:
var row_ids = new int[] { 1, 2 };
using (var oracleConn = new Oracle.DataAccess.Client.OracleConnection(myConnectionString))
{
oracleConn.Open();
var cmd = new Oracle.DataAccess.Client.OracleCommand("my_procedure", oracleConn);
cmd.CommandType = CommandType.StoredProcedure;
var param1 = new Oracle.DataAccess.Client.OracleParameter("listofnumbers", Oracle.DataAccess.Client.OracleDbType.Array, ParameterDirection.Input);
param1.CollectionType = Oracle.DataAccess.Client.OracleCollectionType.PLSQLAssociativeArray;
param1.UdtTypeName = "num_list";
param1.Value = row_ids;
cmd.Parameters.Add(param1);
var param2 = new Oracle.DataAccess.Client.OracleParameter("v_value ", Oracle.DataAccess.Client.OracleDbType.Char, ParameterDirection.Input);
param2.Value = "Y";
cmd.Parameters.Add(param2);
cmd.ExecuteNonQuery();
}
अपवादों को फेंक दिया गया राज्य:
अमान्य पैरामीटर बाध्यकारी पैरामीटर नाम: listofnumbers
क्या गुण मैं पैरामीटर को परिभाषित करने में याद आ रही है?
हाय, आप इसे हल करने के तरीके को कैसे समाप्त कर चुके हैं? नीचे दिया गया जवाब मेरे लिए काम नहीं करता था। – Jason
मेरे संपादित उत्तर में पोस्ट किए गए लिंक में दिए गए समाधान का प्रयास करें। –
पीएस नीचे दिए गए उत्तर मेरे लिए काम करता है - आपको UdtTypeName सेट नहीं करना चाहिए बल्कि इसके बजाय संग्रह प्रकार का उपयोग करना चाहिए। –