Исключение данных не найдено в транзакции Oracle SP - PullRequest
0 голосов
/ 19 октября 2011

У меня проблема с чтением данных из базы данных oracle db.

Как вы видите ниже, у нас есть собственный DAL. Подключаемся к БД используя этот класс ниже. В EntityLayer (где мы подключаемся к БД), программа подключается к БД для запуска 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, 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] ... Но я знаю, что есть данные для этого запроса, как вы видите в тестовой среде!

Когда я пытался вызвать этот sp, используя новую БД newDb = 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
    {
       ..
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...