简体   繁体   中英

ORA-00936 when executing insert command

I have looked through this piece of my code but for some reason it still goes to the ORA-00936 error when trying to execute. Can anyone find where I am going wrong?

public void InsertActionItem(ActionItems actionItem)
{
    OracleConnection con = iscConnection();
    OracleCommand cmd = new OracleCommand("insert into cs_update_resolutions (task_id, cust_code, task_resolved, agent_entered) VALUES (@taskId, @custCode, @taskResolved, @getUser)", con);
    cmd.Parameters.Add("@taskId", OracleDbType.Int32).Value = actionItem.InsertTaskId;
    cmd.Parameters.Add("@custCode", OracleDbType.Int32).Value = actionItem.InsertCustCode;
    cmd.Parameters.Add("@taskResolved", OracleDbType.Varchar2).Value = actionItem.InsertResolution;
    cmd.Parameters.Add("@getUser", OracleDbType.Varchar2).Value = actionItem.InsertCurrentUser;
    try
    {
        con.Open();
        cmd.ExecuteNonQuery();                
        con.Close();
    }
    catch (Exception ex)
    {
        con.Close();
        MessageBox.Show(ex.ToString());
    }
}

Oracle uses : for parameters, instead of @ :

insert into cs_update_resolutions
(task_id, cust_code, task_resolved, agent_entered)
VALUES (:taskId, :custCode, :taskResolved, :getUser)

So the full code would be:

OracleConnection con = iscConnection();
OracleCommand cmd = new OracleCommand("insert into cs_update_resolutions (task_id, cust_code, task_resolved, agent_entered) VALUES (:taskId, :custCode, :taskResolved, :getUser)", con);
cmd.Parameters.Add(":taskId", OracleDbType.Int32).Value = actionItem.InsertTaskId;
cmd.Parameters.Add(":custCode", OracleDbType.Int32).Value = actionItem.InsertCustCode;
cmd.Parameters.Add(":taskResolved", OracleDbType.Varchar2).Value = actionItem.InsertResolution;
cmd.Parameters.Add(":getUser", OracleDbType.Varchar2).Value = actionItem.InsertCurrentUser;

I don't think you need the colons when you're adding the parameters, just when you bind them in the insert statement.

public void InsertActionItem(ActionItems actionItem)
{
    OracleConnection con = iscConnection();
    OracleCommand cmd = new OracleCommand("insert into cs_update_resolutions (task_id, cust_code, task_resolved, agent_entered) VALUES (:taskId, :custCode, :taskResolved, :getUser)", con);
    cmd.Parameters.Add("taskId", OracleDbType.Int32).Value = actionItem.InsertTaskId;
    cmd.Parameters.Add("custCode", OracleDbType.Int32).Value = actionItem.InsertCustCode;
    cmd.Parameters.Add("taskResolved", OracleDbType.Varchar2).Value = actionItem.InsertResolution;
    cmd.Parameters.Add("getUser", OracleDbType.Varchar2).Value = actionItem.InsertCurrentUser;
    try
    {
        con.Open();
        cmd.ExecuteNonQuery();                
        con.Close();
    }
    catch (Exception ex)
    {
        con.Close();
        MessageBox.Show(ex.ToString());
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM