当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,