C#使用事务报ORA-24784: 事务处理已存在
代码如下:using (TransactionScope scope = EHRTransaction.CreateTransactionScope())
{
OracleParameter[] commandParameters = new OracleParameter[1];
commandParameters[0] = new OracleParameter(":sql", checkSql);
string strSql = @"update norm_check_type_catalog set catalog='" + catalog + "',type_id=" + typeID + " where check_code='" + checkCode + "' ";
DbHelperOra.ExecuteSql(strSql);
strSql = @"update norm_check_rule set check_sql=:sql,notes ='"+notes+"' where check_id='" + checkID + "'";
DbHelperOra.ExecuteSql(strSql, commandParameters);
scope.Complete();
return "ok";
}
不知道是什么问题,求大神解答..好像和oracle有关系? --------------------编程问答-------------------- 你的DbHelperOra.ExecuteSql是怎么写的?如果里面再开启一个事务,就会报错,因为Oracle只允许一个事务,但同样的代码到了SqlServer里面就正常,因为SqlServer可以嵌套多个事务。 --------------------编程问答-------------------- 好象是这样..但现在奇怪的是我测试环境不同,有些地方这段代码不会报错..是oracle有补丁可以支持嵌套吗? --------------------编程问答-------------------- 这不是BUG,所以谈不上补丁,你需要修改你的DbHelperOra类才行,或者你别用TransactionScope,因为它对Oracle支持不好,况且微软已经表示不在对Oracle支持了,.NET4.0以上自行使用Oracle公司提供的标准dll来操作。
补充:.NET技术 , C#