OracleDataReader只返回一行

时间:2012-11-16 11:51:06

标签: c# visual-studio oracle

我试图循环游标。当我在pl / sql中直接执行命令(表示为sql - 见下文)时,我得到的结果集更多。 但是当我运行这段代码时,我只得到一行:

using (OracleConnection conn = new OracleConnection(connstring))
{
    conn.Open();
    string sql = "select close, ts from dpr@price where qot_id=2029543939 and ts>='" + start + "' and  ts<='" + end + "'";
    using (OracleCommand comm = new OracleCommand(sql, conn))
    {
        using (OracleDataReader rdr = comm.ExecuteReader())
        {
             while (rdr.Read())
             {                                
                  Console.WriteLine(rdr.GetOracleDecimal(0));
             }

         }
     }
}

代码不会抛出任何异常(至少不是以通常的方式;我的意思是它不会停止或写入堆栈跟踪)。但是我可以在调试时通过reader Object看到这些行(我不认为它在这里是相关的,但显示输出&#34;以防万一&#34;):

InitialLONGFetchSize = 'rdr.InitialLONGFetchSize' threw an exception of type 'System.NullReferenceException' 

InitialLOBFetchSize = 'rdr.InitialLOBFetchSize' threw an exception of type 'System.NullReferenceException'

结果应该只有DateTimeNumber (10,4)类型。并且该表没有类型为lob或long的字段。

这是表格方案:

QOT_ID    NUMBER
TS            DATE
CLOSE     NUMBER
OPEN      NUMBER
HIGH      NUMBER
LOW       NUMBER
KASSE     NUMBER
VOLUME    NUMBER
CLOSE_BID     NUMBER
SPL_BEREINIGT VARCHAR2
OPEN_INTEREST NUMBER
TRADES    NUMBER
TURNOVER      NUMBER
HIGH_BID      NUMBER
LOW_ASK   NUMBER

查询正确且条目存在。返回的行似乎是随机的......它不是第一行或最后一行。我使用ODT和ODAC 11.我有VS2012并在Windows 7(32位)下工作。我已连接到Oracle 10g。

任何线索我做错了什么?

1 个答案:

答案 0 :(得分:2)

请参阅:Oracle Data Provider for .Nethere以及here to

似乎很可能通过指定以下任一项来解决问题:(未能指定其中任何一个导致InitialLONGFetchSize和InitialLOBFetchSize都出现问题)

  • 主键

  • ROWID

  • 唯一列 - (定义为已定义唯一约束或已创建唯一索引的一组列,其中集合中至少有一列具有在其上定义的NOT NULL约束)

未能指定InitialLONGFetchSize和InitialLOBFetchSize的值。