Я использую EDBPostgresql в качестве базы данных и C # .NET в качестве языка интерфейса с EDB Connector версии 4.0.6.1. У меня проблема с параметром INPUT
для настраиваемого типа. Я объявил настраиваемый тип в схеме ипакет и вызов через другой пакет proc, но я получаю сообщение об ошибке:
«42883: процедура quad_txn.pkg_group_config_test.p_savegroup (символ меняется []) не существует»
Я пробовал 2-3 вещи, но не смог добиться успеха, и я пытался без пакета, но ошибка та же, однако это нормально работает с Oracle 11g в качестве входного параметра PLSQLAssociativeArray
Код базы данных:
TYPE t_string_tab IS TABLE OF character varying(4000) INDEX BY integer;
Создается с помощью quad_txn.pkg_cmn_util (schema.packageName)
И
PROCEDURE p_savegroup(pi_mnpg_id quad_txn.pkg_cmn_util.t_string_tab);
Создается с помощью quad_txn.pkg_group_config_test (schema.packageName)
public static void CreateGroup()
{
try
{
string sConn = "Server=quad-station;Port=5444;User Id=quad_usr;Password=quad_usr;Database=quadrant_db;SearchPath=quad_txn;Pooling=True;Timeout=30;MaxPoolSize=30;MinPoolSize=10";
EDBConnection conn = new EDBConnection(sConn);
conn.Open();
EDBCommand command;
////Procedure calling
EDBTransaction tran = conn.BeginTransaction();
command = new EDBCommand("quad_txn.PKG_GROUP_CONFIG_TEST.P_SAVEGROUP", conn);
//conn.ReloadTypes();
//conn.TypeMapper.MapComposite<TStringTab>();
command.CommandType = CommandType.StoredProcedure;
command.Transaction = tran;
EDBParameter param7 = new EDBParameter();
param7.ParameterName = "PI_MNPG_ID";
param7.EDBDbType = EDBDbType.Array | EDBDbType.Varchar;
// param7.DataTypeName = "quad_txn.pkg_cmn_util.t_string_tab";
param7.Size = 100;
param7.Direction = ParameterDirection.Input;
param7.SourceVersion = DataRowVersion.Current;
param7.Value = new string[] { "1", "3", "11" };
command.Parameters.Add(param7);
int affectedrows = command.ExecuteNonQuery();
tran.Commit();
conn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}