想向用户表插入记录,然后返回最新的自增id,但是提示错误        public int Add(Tb_UserManager model)
        {
            using (OracleDataAccessManagerHelper ODAMH = new OracleDataAccessManagerHelper(OracleConnectString))
            {
                
                string sSQL = @"var MaxID int; 
                                exec :MaxID:=SEQ_ATABLE.NextVal;                Insert into Tb_UserManager(    ID, COMPANYID, USERNAME, USERPWD, SEX, TELPHONE, ROLEID, ISENABLE, ADDTIME, ADDDATE) 
                                    values(:MaxID,:COMPANYID,:USERNAME,:USERPWD,:SEX,:TELPHONE,:ROLEID,:ISENABLE,:ADDTIME,:ADDDATE); Select :MaxID as b from dual; ";
                OracleParameter[] OP = new OracleParameter[9];
                OP[0] = ODAMH.CreateOracleParameter("COMPANYID", OracleDbType.Int32, 4, model.CompanyID);
                OP[1] = ODAMH.CreateOracleParameter("USERNAME", OracleDbType.NVarchar2, 20, model.UserName);
                OP[2] = ODAMH.CreateOracleParameter("USERPWD", OracleDbType.Varchar2, 20, model.UserPwd);
                OP[3] = ODAMH.CreateOracleParameter("SEX", OracleDbType.Int32, 4, model.Sex);
                OP[4] = ODAMH.CreateOracleParameter("TELPHONE", OracleDbType.Varchar2, 20, model.TelPhone);
                OP[5] = ODAMH.CreateOracleParameter("ROLEID", OracleDbType.Int32, 4, model.RoleID);
                OP[6] = ODAMH.CreateOracleParameter("ISENABLE", OracleDbType.Int32, 4, model.IsEnable);
                OP[7] = ODAMH.CreateOracleParameter("ADDTIME", OracleDbType.Date, 4, model.AddTime);
                OP[8] = ODAMH.CreateOracleParameter("ADDDATE", OracleDbType.Date, 4, model.AddDate);
                return Convert.ToInt32(ODAMH.ExecuteScalar(sSQL, OP));
            }
        }执行时候报错 ORA-00900: invalid SQL statement但是用SQL Developer 执行 下面脚本就没有问题var MaxID int;exec :MaxID:=SEQ_ATABLE.NextVal;insert into TB_USERMANAGER( ID)
values(:MaxID);Select :MaxID from dual;
脚本与上面C# 写的类似请教各位大神了。

解决方案 »

  1.   

    用select SEQ_ATABLE.NextVal from dual取出序列下一个值
    再用一次insert插入
      

  2.   

    你应该使用plsql的匿名块。
    begin
    insert end;
      

  3.   

    把序列的值拼进sql       Insert into Tb_UserManager(    ID, COMPANYID, USERNAME, USERPWD, SEX, TELPHONE, ROLEID, ISENABLE, ADDTIME, ADDDATE) 
    (select     SEQ_ATABLE.NextVal, :COMPANYID,:USERNAME,:USERPWD,:SEX,:TELPHONE,:ROLEID,:ISENABLE,:ADDTIME,:ADDDATE from dual);