OCI-22303: тип ""."тип объекта моей хранимой процедуры" не найден
Здравствуйте , у меня есть проблема, когда я вызываю свою хранимую процедуру из c#, в моей хранимой процедуре oracle, которую я вызываю, у меня есть 2 входа и два выхода , мои входные данные первый вход-CLOB означает, что он будет передавать строку в коде c#, а второй вход-число.мои результаты первый выход-это определенный объект в моей хранимой процедуре
t_t_out_house_details и этот объект возвращает 10 значений, второй вывод-число.
моя хранимая процедура:
PROCEDURE prc_get_impacted_houses(p_polygon_geom IN CLOB, p_imkl_id IN NUMBER, p_out_house_details OUT t_t_out_house_details, p_return_cd OUT NUMBER);
я вызываю эту хранимую процедуру и передаю эти два входа с помощью c# вот так:
static public void CallingStoredProcedure(string PolygonGeom, int PImklId) { //my custom object try { //conection to the database using (OracleConnection conn = new OracleConnection("Data Source=; User ID=; Password=")) { t_out_house_details houseDetails = new t_out_house_details(); OracleCommand cmd = new OracleCommand(); conn.Open(); cmd = new OracleCommand("prc_get_impacted_houses", conn); cmd.CommandType = CommandType.StoredProcedure; //first input cmd.Parameters.Add("p_polygon_geom", OracleDbType.Clob).Value = PolygonGeom; cmd.Parameters.Add("p_imkl_id", OracleDbType.Int32).Value = PImklId; //Oracle Parameters //first output OracleParameter objParam = new OracleParameter(); objParam.OracleDbType = OracleDbType.Object; objParam.UdtTypeName = "t_t_out_house_details"; objParam.Value = houseDetails; //T_T_OUT_HOUSE_DETAILS objParam.Direction = ParameterDirection.Output; cmd.Parameters.Add(objParam); //second output OracleParameter op = null; op = new OracleParameter("p_return_cd", OracleDbType.Int32); op.Direction = ParameterDirection.Output; cmd.Parameters.Add(op); // cmd.BindByName = false; //Taking instance from my object //execute my command cmd.ExecuteNonQuery(); houseDetails = (t_out_house_details)objParam.Value; } ////Console.WriteLine(cmd.Parameters["p_return_cd"].Value); } catch(OracleException ex) { Console.WriteLine(ex.Message); } catch (Exception ex) { Console.WriteLine(ex.Message); //throw new Exception("Error " + ex.Message); }
кроме того, у меня есть объект c#, где я хочу сохранить свои возвращаемые значения из этого объекта хранимой процедуры в него.
мой объект c#
public class t_out_house_details { public string NET_CD { get; set; } public int SUBNET_NR { get; set; } public int CABLE_NUMBER { get; set; } public int MK { get; set; } public int KG { get; set; } public int KS { get; set; } public string HOUSENR_FIRST { get; set; } public string HOUSENR_FIRST_SUFFIX { get; set; } public string GEOMETRY { get; set; } public string PROJ_LINE_GEOM { get; set; } }
моя проблема в том, что мой код не может прочитать тип объекта, который я определяю с помощью UTD user defind types.
моя ода застряла здесь :
OracleParameter objParam = new OracleParameter(); objParam.OracleDbType = OracleDbType.Object; objParam.UdtTypeName = "t_t_out_house_details"; objParam.Value = houseDetails; //T_T_OUT_HOUSE_DETAILS objParam.Direction = ParameterDirection.Output; cmd.Parameters.Add(objParam);
и дайте мне эту ошибку: что он не может найти мой объект :
OCI-22303: тип ""."тип объекта моей хранимой процедуры" не найден
я хочу знать в чем проблема
я вставляю строку и int, и я протестировал эту хранимую процедуру на pl sql, она работает нормально без ошибок.
Joan Magnet
Вы искали в codeproject?
http://www.codeproject.com/Articles/141728/Interaction-between-C-Application-and-Oracle-throu
Hesham el Masry
да да но это не работает
Member 13752818
нашли ли вы решение этой проблемы?