2016-09-17 25 views
0

我想将数据插入到表下方未能参数值从字符串转换为使用像<code>Storedprocedure.</code></p> <p>我已经写代码十进制错误

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(); 

但在cmd.ExecuteNonQuery()我得到错误的

无法将参数值从字符串转换为小数。

我不明白错误所在

也看到我的SP结构

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; 

请提示这里有什么问题

UDPATE

Mkey是自动递增列。

+0

你尝试creationdate和LASTUPDATEDATE不添加字符串格式? –

+0

@mwisnicki:对不起,你没有?你的意思是我加了'hh:mm:ss'吗? – BNN

+0

只设置DateTime.Now.Date。并告诉我数据库中数字值的精确度是多少? –

回答

1

尝试更换:

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

有了:

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

改变后,我仍然得到相同的错误。 – BNN

+0

我解决了这个错误,但是把'mkey'列作为硬编码。因为我的'mkey'列是自动增量列。如何使用它。目前我插入它像这样'string mkey = Convert.ToInt32(“1”)。ToString(); cmd.Parameters.Add(“mkey”,OracleType.Number).Value = mkey;' – BNN

+0

但你提到'mkey'是自动递增的,所以我猜你根本不应该插入它。 – serhiyb

相关问题