OracleConnection con = new OracleConnection(strConn);
        con.Open();
        String sql = "";
        sql = "insert into person(xh,xm) values(id.nextval,:xm)";
        OracleCommand cmd = new OracleCommand(sql, con);
        OracleParameter[] parm = new OracleParameter[10];
        parm[0] = new OracleParameter("xm", OracleType.NVarChar, 10);
        parm[0].Value = "张三";
        cmd.ExecuteNonQuery(); }其中id.nextval是我建的序列,为什么执行的时候就报错误,提示并非所有变量都已关联??

解决方案 »

  1.   

    定义有问题吧,你定义一个参数数组,长度为10,但你只给一个赋值,
    id.nextval这个序列对不对?
      

  2.   

    两个方法
    1,执行 "insert into person(xh,xm) values((select id.nextval from dual),:xm)";
    2,
    执行执行 "insert into person(xm) values(xm)";然后做个触发器如:create or replace trigger contract_exp
    before insert on ws_contract_exp for each row
    begin
     select s_ws_contract_exp.nextval into :new.autoid from dual;
    end;
    如果要得到当前插入的id,则可以马上执行:
    select id.currval from dual
      

  3.   

    parm[0] = new OracleParameter("xm", OracleType.NVarChar, 10);参数名应该为 :xm 

      

  4.   

    晕,你是不是没有将参数添加进去啊..cmd .Parameters.Add(parm[0]);或者如果vs2005:cmd .Parameters.AddWithValue(parm[0]);