I need to pass an object to stored procedure for inserting the data..
I tried this coding
button_click()
{
insert_pro insobj = new insert_pro();
insobj.ID = Convert.ToInt16(textBox1.Text);
insobj.Name = textBox2.Text;
insobj.Gender =Convert.ToChar(textBox3.Text);
OracleConnection conn = new OracleConnection("Data Source=r2a;User ID=testv55;Password=testv55;");
conn.Open();
OracleCommand cmd = new OracleCommand("smp_ins", conn);
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter emp_obj = new OracleParameter();
emp_obj.OracleDbType = OracleDbType.Object;
emp_obj.Direction = ParameterDirection.Input;
emp_obj.UdtTypeName = "EMP_TYP";
emp_obj.Value = insobj;
cmd.Parameters.Add(emp_obj);
cmd.ExecuteNonQuery();
con.close();
}
insert_pro class:
namespace test_form
{
public class insert_pro:IOracleCustomType
{
[OracleObjectMappingAttribute("Id")]
public virtual int ID { get; set; }
[OracleObjectMappingAttribute("Name")]
public virtual string Name { get; set; }
[OracleObjectMappingAttribute("Gender")]
public virtual char Gender { get; set; }
public virtual void FromCustomObject(OracleConnection conn, IntPtr objUdt)
{
OracleUdt.SetValue(conn, objUdt, "Id", this.ID);
OracleUdt.SetValue(conn, objUdt, "Name", this.Name);
OracleUdt.SetValue(conn, objUdt, "Gender", this.Gender);
}
public virtual void ToCustomObject(OracleConnection conn, IntPtr objUdt)
{
this.ID = ((int)(OracleUdt.GetValue(conn, objUdt, "Id")));
this.Name = ((string)(OracleUdt.GetValue(conn, objUdt, "Name")));
this.Gender = ((char)(OracleUdt.GetValue(conn, objUdt, "Gender")));
}
}
}
error message is Custom type mapping for 'test_form.insert_pro' is not specified or is invalid