0

I want to insert data into the table using Storedprocedure.

I have written code like below

OracleConnection ObjPriCon = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString());
    ObjPriCon.Open();
    string spquery = "xxcus.pn_insert_grid_agreeement";
    OracleCommand cmd = new OracleCommand(spquery, ObjPriCon);
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("Mkey", OracleType.Number).Value = e.Record["Mkey"];
    cmd.Parameters.Add("GrdType", OracleType.VarChar).Value = e.Record["grd_type"];
    cmd.Parameters.Add("firstname", OracleType.VarChar).Value = e.Record["f_name"];
    cmd.Parameters.Add("lastname", OracleType.VarChar).Value = e.Record["l_name"];

    cmd.Parameters.Add("contactdet", OracleType.Number).Value = e.Record["cont_det"];
    cmd.Parameters.Add("pancardDet", OracleType.VarChar).Value = e.Record["pancard_det"];
    cmd.Parameters.Add("trantype", OracleType.VarChar).Value = "GDS";
    cmd.Parameters.Add("createdby", OracleType.Number).Value = Request.QueryString["userid"].ToString();

    cmd.Parameters.Add("creationdate", OracleType.DateTime).Value = DateTime.Now.ToString("dd/MM/yyyy");
    cmd.Parameters.Add("lastUpdateDate", OracleType.DateTime).Value = DateTime.Now.ToString("dd/MM/yyyy");
    cmd.Parameters.Add("lastUpdatedBy", OracleType.Number).Value = Request.QueryString["userid"].ToString();
    cmd.Parameters.Add("deleteflag", OracleType.Char).Value = "N";

    cmd.ExecuteNonQuery();
    ObjPriCon.Close();

But at cmd.ExecuteNonQuery() I am getting error as

Failed to convert parameter value from a String to a Decimal.

I don't understand where the error is

Also see my SP structure

CREATE OR REPLACE PROCEDURE XXCUS.pn_insert_grid_agreeement (
       mkey               NUMBER,  
       GrdType           VARCHAR2,
       firstname             VARCHAR2,
       lastname             VARCHAR2,
       contactdet           NUMBER,
       pancardDet        VARCHAR2,
       trantype          VARCHAR2,
       createdby         NUMBER,
       creationdate      DATE,
       lastUpdateDate   DATE,
       lastUpdatedBy    NUMBER,
       deleteflag        CHAR
    )
    IS
    BEGIN
       INSERT INTO xxcus.xxacl_pn_grid_agreement
                   (MKEY, grd_type, f_name, l_name, cont_det, pancard_det, tran_type,
                    created_by, creation_date, last_update_date,
                    last_updated_by, delete_flag
                   )
            VALUES (mkey, GrdType, firstname,lastname, contactdet,pancardDet, trantype,
                    createdby, creationdate, lastUpdateDate,
                    lastUpdatedBy, deleteflag
                   );
    END;

Kindly suggest what is wrong here

UDPATE

Mkey is auto incremented column.

7
  • Are you try creationdate and lastUpdateDate add without string format? Commented Sep 17, 2016 at 14:08
  • @mwisnicki: sorry didn't got you? did u mean shd I add hh:mm:ss also ? Commented Sep 17, 2016 at 14:09
  • Set only DateTime.Now.Date. And tell me what is precision on your number values in database? Commented Sep 17, 2016 at 14:11
  • @mwisnicki: I added like this DateTime.Now.Date(); but getting error as non-invocable member 'system.datetime.now' cannot be used like a method Commented Sep 17, 2016 at 14:13
  • @mwisnicki: i get value as 17-09-2016 19:50:15 while using DateTime.Now.ToString("dd/MM/yyyy HH:mm:s") Commented Sep 17, 2016 at 14:20

1 Answer 1

1

Try replacing:

cmd.Parameters.Add("createdby", OracleType.Number).Value = Request.QueryString["userid"].ToString();
cmd.Parameters.Add("lastUpdatedBy", OracleType.Number).Value = Request.QueryString["userid"].ToString();

With:

cmd.Parameters.Add("lastUpdatedBy", OracleType.Number).Value = Convert.ToInt32(Request.QueryString["userid"]);
cmd.Parameters.Add("createdby", OracleType.Number).Value = Convert.ToInt32(Request.QueryString["userid"]);
Sign up to request clarification or add additional context in comments.

4 Comments

after changing that, I am still getting the same error.!
i resolved that error, but by putting mkey column as hardcode. Because my mkey column is auto increment column. How to use that. currently I insert it like this string mkey = Convert.ToInt32("1").ToString(); cmd.Parameters.Add("mkey", OracleType.Number).Value = mkey;
but you mentioned that mkey is auto-increment so I guess you should not insert it at all.
Yes, but I guess I need to create a sequence in SP for using it. Can u help me with that ?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.