在Oracle SP Transaction上找不到数据异常

时间:2011-10-19 13:14:25

标签: c# .net oracle

我有一个关于从oracle db provide读取数据的问题。

如下所示,我们拥有自己的DAL。 我们使用下面的课程连接到DB。 在EntityLayer(我们连接到db)中,程序连接到db以运行具有特定值的Select Data SP。 SP的名称是: SwordBros_SP ,需要p_A_Value,p_B_Value,p_Cursor。

p_A_Value = 41455;
p_B_Value = 15556;

当我在PLSQL Developer工具上运行测试时,它返回一个只有一行的表。 (大!)

但是当我在程序上调用sp时。 (.Net 2.0,winForms Project,FacedeDesignPattern)

// TheFacade.cs

    ..
     DB db = new DB();
     db.BeginTran();
    ..
    //The db is initiliazed on facadeLayer, and is sent to the EntityLayer for db operations.
// db is used in another update/insert operations during the transaction.
// the SP Execution that is showed below, is just one operation during the transaction.   
..

// TheEntitiy.cs

   {
            OracleParameter pCursor = new OracleParameter("p_Cursor", OracleDbType.RefCursor, ParameterDirection.InputOutput);
            OracleParameter pAValue = new OracleParameter("p_A_Value", p_A_Value);
            OracleParameter pBValue = new OracleParameter("p_B_Value", p_B_Value);
            DataRow dr = db.ExecDataSet("SwordBros_SP", pAValue , pBValue , pCursor).Tables[0].Rows[0]

如下所示,没有行返回!它为行[0]抛出错误... 但我知道这个查询有数据,正如您在测试环境中看到的那样!

当我尝试使用新的数据库newDb = DB()调用此sp时;它很完美 返回数据?为什么,为什么需要另一个新的DB事务?

DataRow dr = newDb.ExecDataSet("SwordBros_SP", pAValue , pBValue , pCursor).Tables[0].Rows[0] -- Works Great Again !

// DB.cs

using Oracle.DataAccess.Client;
using System;
using System.Data;
using System.Data.SqlClient;
namespace SwordBrosTech.App.Data
{
 public class DB : IDisposable
    {
       ..
    }
}

0 个答案:

没有答案