.net oracle 之insert 与 update 更新封闭代码
觉得我可以从的更新方法下手,于是有了下面这些尝试了。
在oracle 中insert 语句是可以使用 returning 返回新增的记录的。
于是我们的insert 语句就是这样了.
insert into tablename (uniquecolumn,othercolumns)
values(table_seq.nextval,values) returning uniquecolumn into :unique_id。
这样执行之后,我就可以通过out参数 unique_id 获取新增的记录的主键啦
public override object insert(editorparams pm) { if (pm != null && pm.editvalues.count > 0) { querysetting qs = configenginer.instance.datamodels[pm.modeltype]; string insertformart = @”insert into #oysterval:tablename# (#oysterval:uniquecolumn#,#oysterval:columns#)values(#oysterval:tablename#_seq.nextval,#oysterval:values#) returning #oysterval:uniquecolumn# into :unique_id”; dictionary vals = new dictionary(); list parms = new list(); vals.add(“tablename”, qs.tablename); vals.add(“uniquecolumn”, qs.uniquecolumn.columnname); vals.add(“columns”, pm.insertcolumns); vals.add(“values”, pm.insertvalues); //system.nullable var unqtype = qs.uniquecolumn.propertytype; if (unqtype.fullname.contains(“system.nullable”)) { var types = unqtype.getgenericarguments(); if (types != null && types.length > 0) { unqtype = types[0]; } } var pr = new oracleparameter(“:unique_id”, activator.createinstance(unqtype)); pr.direction = parameterdirection.inputoutput; parms.add(pr); parms.addrange(pm.dataparms); string sql = insertformart.tooystertemplate(vals); pm.effectcount = dbenginer.instance.executenonquery(sql, parms.toarray()); pm.effectuniqueids.add(pr.value); return pm.effectuniqueids[0]; } else { throw new exception(“请检查传入的editparams,更新列数据不能为空!”); } return null; }
里面使用到的其他类型引用,以后会慢慢分享。
而update 则可以这样: uniquecolumn from tablename where condition for update。
将要更新的行select 出来,并且加上update 的锁。保证update按顺序执行,而不会错乱
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1839742.html